XAT RÁDIO TIMBLESOM
import os
import queue
import random
import threading
import time
import pyaudio
import pygame
# Inicialização dos subsistemas de áudio
pygame.mixer.init(frequency=44100, size=-16, channels=2)
pygame.init()
class RadioAutomator:
def __init__(self):
self.playlist = []
self.cartucheira = {}
self.is_running = False
self.current_track = None
# Configuração do Microfone (PyAudio)
self.p = pyaudio.PyAudio()
self.mic_stream = None
self.mic_active = False
def adicionar_playlist(self, caminho_arquivo):
"""Adiciona uma música ou vinheta à fila de reprodução."""
if os.path.exists(caminho_arquivo):
self.playlist.append(caminho_arquivo)
print(f"[Playlist] Adicionado: {os.path.basename(caminho_arquivo)}")
else:
print(f"[Erro] Arquivo não encontrado: {caminho_arquivo}")
def configurar_cartucheira(self, id_botao, caminho_arquivo):
"""Configura um gatilho rápido (jingle/vinheta)."""
self.cartucheira[id_botao] = caminho_arquivo
print(
f"[Cartucheira] Botão {id_botao} configurado com"
f" {os.path.basename(caminho_arquivo)}"
)
def disparar_cartucheira(self, id_botao):
"""Toca vinhetas/efeitos instantaneamente sobrepondo a programação."""
if id_botao in self.cartucheira:
sound = pygame.mixer.Sound(self.cartucheira[id_botao])
# Canal dedicado ou livre para vinhetas rápidas
channel = pygame.mixer.find_channel()
if channel:
channel.play(sound)
print(f"[No Ar - Vinheta] Tocando botão {id_botao}")
else:
print(f"[Aviso] Botão {id_botao} não mapeado.")
def iniciar_automacao(self):
"""Loop principal de execução da rádio (Player automático)."""
self.is_running = True
print("\n--- AUTOMAÇÃO DE RÁDIO INICIADA ---")
while self.is_running:
# Se o player principal estiver livre e houver itens na playlist
if not pygame.mixer.music.get_busy() and self.playlist:
# Pega a próxima música (rotina simples de fila)
self.current_track = self.playlist.pop(0)
print(f"[No Ar] Tocando agora: {os.path.basename(self.current_track)}")
pygame.mixer.music.load(self.current_track)
pygame.mixer.music.play()
# Opcional: Reinsere a música no fim para simular rotação contínua
self.playlist.append(self.current_track)
time.sleep(1)
def alternar_microfone(self, ativar=True):
"""Abre/fecha o canal do microfone ao vivo."""
if ativar and not self.mic_active:
self.mic_active = True
# Abaixa o volume da música de fundo (Duck effect)
pygame.mixer.music.set_volume(0.2)
print("[Ao Vivo] Microfone ABERTO (Volume da música reduzido)")
# Aqui entraria a captura do PyAudio para injetar no encoder de streaming
elif not ativar and self.mic_active:
self.mic_active = False
pygame.mixer.music.set_volume(1.0)
print("[Locução] Microfone FECHADO (Volume da música restaurado)")
# --- Exemplo de Uso do Núcleo ---
if __name__ == "__main__":
radio = RadioAutomator()
# Simulando inserção de músicas e vinhetas (substitua por caminhos reais)
# radio.adicionar_playlist("caminho/para/musica1.mp3")
# radio.configuravel_cartucheira(1, "caminho/para/vinheta_abertura.mp3")
# Para rodar a automação em segundo plano:
# thread_automacao = threading.Thread(target=radio.iniciar_automacao)
# thread_automacao.start()
Assinar:
Postar comentários (Atom)
kuasark
import os import queue import random import threading import time import pyaudio import pygame # Inicialização dos subsistemas de áudio pyg...
Postagens mais visitadas
-
Cocada recheada caseira, direto do Cariri Ceará, vendas c/ o representante em sp tel para contato 11955777113 entrega em sp e grande sp ...
-
Ouça a rádio timblesom na radiosTimblesom É com muita alegria que a rádio timblesom agora está presente no diretório de rádios na , é um ma...
-
Fonte da notícia Cumbica e Região #Agora - Policial de folga intervém em assalto e M4t4 suspeito no Trevo de Bonsucesso Foto Cumbica e Re...

Nenhum comentário:
Postar um comentário