random/mumble-bot/bot2.py

58 lines
1.9 KiB
Python
Raw Normal View History

2020-11-05 11:28:24 +01:00
import pymumble_py3 as pymumble
import subprocess as sp
import time
import sys
import os
import fcntl
import audioop
pwd = "" # password
server = "mumble.esiliati.org" # server address
nick = "TubiaBot2"
channel = "radiospore"
port = 64738 # port number
# Spin up a client and connect to mumble server
mumble = pymumble.Mumble(server, nick, password=pwd, port=port)
# set up callback called when PCS event occurs
mumble.set_receive_sound(1) # Enable receiving sound from mumble server
mumble.start()
mumble.is_ready() # Wait for client is ready
mumble.channels.find_by_name(channel).move_in()
mumble.users.myself.mute()
BUFFER = 0.2
BITRATE = 48000
RESOLUTION = 10 # in ms
FLOAT_RESOLUTION = float(RESOLUTION) / 1000
MONO_CHUNK_SIZE = BITRATE * 2 * RESOLUTION / 1000
STEREO_CHUNK_SIZE = MONO_CHUNK_SIZE * 2
silent = b"\x00" * int(STEREO_CHUNK_SIZE)
cursor_time = None
cursor_time = time.time() - BUFFER
while mumble.is_alive():
if cursor_time < time.time() - BUFFER: # it's time to check audio
base_sound = None
try:
for user in mumble.users.values(): # check the audio queue of each user
if(user.sound.is_sound()):
print(user["name"])
while ( user.sound.is_sound() and int(user.sound.first_sound().time) < int(cursor_time)):
print("perdona e dimentica"+str(user.sound.first_sound().timestamp)+" "+str(cursor_time))
user.sound.get_sound(FLOAT_RESOLUTION) # forget about too old sounds
if user.sound.is_sound():
print(user["name"]+" estraggo")
sound = user.sound.get_sound(FLOAT_RESOLUTION)
except RuntimeError:
eprint("ignored exception in stderr...")
cursor_time += FLOAT_RESOLUTION
else:
time.sleep(FLOAT_RESOLUTION)