def setup(self, send, log, cfg, botopts): BotMod.setup(self, send, log, cfg, botopts) def_cfg = { 'chime_start_sound' : 'sounds/prompt.wav', 'chime_stop_sound' : 'sounds/finish.wav', 'play_start_cmd' : '', 'play_stop_cmd' : '', 'chime_start_cmd' : 'play %s', 'chime_stop_cmd' : 'play %s', 'start_stream_cmd' : 'tools/stream_ssh %s', 'stop_stream_cmd' : '', 'play_chimes' : True, 'start_muted' : False } cfg = cfg.get_section('player', def_cfg) self.log("player_cfg:", cfg) self.worker = worker.Worker() self.worker.set_chime_sound('start', cfg['chime_start_sound']) self.worker.set_chime_sound('stop', cfg['chime_stop_sound']) self.worker.set_command('play_start', cfg['play_start_cmd']) self.worker.set_command('play_stop', cfg['play_stop_cmd']) self.worker.set_command('chime_start', cfg['chime_start_cmd']) self.worker.set_command('chime_stop', cfg['chime_stop_cmd']) self.worker.set_command('start_stream', cfg['start_stream_cmd']) self.worker.set_command('stop_stream', cfg['stop_stream_cmd']) self.worker.set_play_chimes(cfg['play_chimes']) self.worker.set_callback('state', self._state_cb) self.worker.set_callback('error', self._error_cb) self.worker.set_callback('info', self._info_cb) start_muted = cfg['start_muted'] self.control = control.Control(self, self.send_event, start_muted)
def setup(self, send, log, cfg, botopts): BotMod.setup(self, send, log, cfg, botopts) def_cfg = { 'chime_start_sound': 'sounds/prompt.wav', 'chime_stop_sound': 'sounds/finish.wav', 'play_start_cmd': '', 'play_stop_cmd': '', 'chime_start_cmd': 'play %s', 'chime_stop_cmd': 'play %s', 'start_stream_cmd': 'tools/stream_ssh %s', 'stop_stream_cmd': '', 'play_chimes': True, 'start_muted': False } cfg = cfg.get_section('player', def_cfg) self.log("player_cfg:", cfg) self.worker = worker.Worker() self.worker.set_chime_sound('start', cfg['chime_start_sound']) self.worker.set_chime_sound('stop', cfg['chime_stop_sound']) self.worker.set_command('play_start', cfg['play_start_cmd']) self.worker.set_command('play_stop', cfg['play_stop_cmd']) self.worker.set_command('chime_start', cfg['chime_start_cmd']) self.worker.set_command('chime_stop', cfg['chime_stop_cmd']) self.worker.set_command('start_stream', cfg['start_stream_cmd']) self.worker.set_command('stop_stream', cfg['stop_stream_cmd']) self.worker.set_play_chimes(cfg['play_chimes']) self.worker.set_callback('state', self._state_cb) self.worker.set_callback('error', self._error_cb) self.worker.set_callback('info', self._info_cb) start_muted = cfg['start_muted'] self.control = control.Control(self, self.send_event, start_muted)
def __init__(self): BotMod.__init__(self, "audio") self.cmds = [ BotCmd("ping",callee=self.cmd_ping), BotCmd("query_state",callee=self.cmd_query_state), BotCmd("query_active",callee=self.cmd_query_active), BotCmd("query_location",callee=self.cmd_query_location), BotCmd("query_listen_url",callee=self.cmd_query_listen_url) ] listen_url = 'http://%H:8000/pifon' location_name = '%h' self.opts = [ BotOptField('sim', bool, False, desc='enable level simulator'), BotOptField('trace', bool, False, desc='enable level tracing'), BotOptField('listen_url', str, listen_url, desc='url of audio stream'), BotOptField('location', str, location_name, desc='location of audio source'), BotOptField('alevel', int, 1, val_range=[1,100], desc='audio level to reach in attack phase [1-100]'), BotOptField('slevel', int, 1, val_range=[1,100], desc='audio level to stay below in sustain phase [1-100]'), BotOptField('attack', int, 3, val_range=[1,10], desc='period [1s] of loudness required to start playback'), BotOptField('sustain', int, 10, val_range=[0,60], desc='period [1s] of silence required to stop playback'), BotOptField('respite', int, 10, val_range=[0,60], desc='delay [1s] after playback to wait for next'), BotOptField('update', int, 5, val_range=[1,60], desc='update interval of current peak level [100ms]') ] self.events = [ ConnectEvent(self.on_connected), DisconnectEvent(self.on_disconnected), TickEvent(self.on_tick) ] self._setup_tags()
def __init__(self, name="info", listener=None, tick=1): BotMod.__init__(self, name) self.events = [ ConnectEvent(self.on_connect), DisconnectEvent(self.on_disconnect), PeerConnectEvent(self.on_peer_connect), PeerDisconnectEvent(self.on_peer_disconnect), ModListEvent(self.on_modlist), PeerModListEvent(self.on_peer_modlist), TickEvent(self.on_tick), StartEvent(self.on_start), StopEvent(self.on_stop), # custom events BotEvent("audio", "level", arg_types=(int, int, int), callee=self.event_audio_level), BotEvent("audio", "state", arg_types=(str,), callee=self.event_audio_state), BotEvent("audio", "active", arg_types=(bool,), callee=self.event_audio_active), BotEvent("audio", "listen_url", arg_types=(str,), callee=self.event_audio_listen_url), BotEvent("audio", "location", arg_types=(str,), callee=self.event_audio_location), BotEvent("pinger", "check", arg_types=(str, str), callee=self.event_pinger_check), BotEvent("player", "play", arg_types=(str, str), callee=self.event_player_play), BotEvent("player", "stop", arg_types=(str,), callee=self.event_player_stop), BotEvent("player", "mode", arg_types=(str, str), callee=self.event_player_mode), BotEvent("player", "chime", arg_types=(bool,), callee=self.event_player_chime), ] self.audios = {} self.pending_audios = {} self.players = {} self.pending_players = {} self.listener = listener self.tick = tick self.ping_lost = [] self.non_idle_audios = [] self.primary_non_idle_audio = None self.active_audios = [] self.primary_active_audio = None
def __init__(self): BotMod.__init__(self, "pinger") self.cmds = [BotCmd("query", arg_types=(str,), callee=self.cmd_query)] self.opts = [BotOptField("interval", int, 10, desc="check interval for pings")] self.events = [ BotEvent("bot", "pong", callee=self.event_pong), PeerConnectEvent(self.on_peer_connect), PeerDisconnectEvent(self.on_peer_disconnect), PeerModListEvent(self.on_peer_modlist), TickEvent(self.on_tick), ] self.ping_map = {}
def __init__(self): BotMod.__init__(self, "pinger") self.cmds = [BotCmd("query", arg_types=(str, ), callee=self.cmd_query)] self.opts = [ BotOptField("interval", int, 10, desc="check interval for pings"), ] self.events = [ BotEvent("bot", "pong", callee=self.event_pong), PeerConnectEvent(self.on_peer_connect), PeerDisconnectEvent(self.on_peer_disconnect), PeerModListEvent(self.on_peer_modlist), TickEvent(self.on_tick) ] self.ping_map = {}
def __init__(self): BotMod.__init__(self, "test") self.cmds = [ BotCmd("hello",callee=self.cmd_hello) ] self.opts = [ BotOptField("abool",bool,True,desc="a boolean"), BotOptField("anint",int,42, val_range=[1,100], desc="an integer"), BotOptField("astr",str,"hoo!", desc="a string") ] self.events = [ BotEvent("echo","hello",callee=self.event_echo_hello), ConnectEvent(self.on_connect), DisconnectEvent(self.on_disconnect), TickEvent(self.on_tick) ]
def __init__(self): BotMod.__init__(self, "player") self.cmds = [ BotCmd("mute",callee=self.cmd_mute), BotCmd("monitor",callee=self.cmd_monitor), BotCmd("listen",callee=self.cmd_listen,arg_types=(str,)), BotCmd("chime",callee=self.cmd_chime,arg_types=(bool,)), BotCmd("query_mode",callee=self.cmd_query_mode), BotCmd("query_chime",callee=self.cmd_query_chime) ] self.events = [ PeerModListEvent(self.on_peer_modlist), PeerDisconnectEvent(self.on_peer_disconnected), StopEvent(self.on_stop), BotEvent("audio","active",callee=self.on_player_active,arg_types=(bool,)), BotEvent("audio","listen_url",callee=self.on_player_listen_url,arg_types=(str,)), ] self.audio_peers = []
def setup(self, send, log, cfg, botopts): BotMod.setup(self, send, log, cfg, botopts) self._get_vumeter_cfg(cfg) self.ev = DetectorEventHandler(self.send_event, self.botopts) self.d = detector.Detector(self.botopts) self.rec = recorder.Recorder(self.sample_rate, self.interval, self.channels, self.rec, self.dev, self.tool, self.zero_range, self.sox_filter) self.sim = simulator.Simulator() self.log("init audio: cmd=", self.rec.cmd) self.log("options=",self.botopts.get_values()) # setup threading self.queue = queue.Queue() self.thread = threading.Thread(target=self.thread_run, name="audiorec") self.do_run = True self.thread.start()
def __init__(self): BotMod.__init__(self, "player") self.cmds = [ BotCmd("mute", callee=self.cmd_mute), BotCmd("monitor", callee=self.cmd_monitor), BotCmd("listen", callee=self.cmd_listen, arg_types=(str, )), BotCmd("chime", callee=self.cmd_chime, arg_types=(bool, )), BotCmd("query_mode", callee=self.cmd_query_mode), BotCmd("query_chime", callee=self.cmd_query_chime) ] self.events = [ PeerModListEvent(self.on_peer_modlist), PeerDisconnectEvent(self.on_peer_disconnected), StopEvent(self.on_stop), BotEvent("audio", "active", callee=self.on_player_active, arg_types=(bool, )), BotEvent("audio", "listen_url", callee=self.on_player_listen_url, arg_types=(str, )), ] self.audio_peers = []
def __init__(self): BotMod.__init__(self, "echo") self.cmds = [ BotCmd("echo",callee=self.cmd_echo) ]
def __init__(self, name="info", listener=None, tick=1): BotMod.__init__(self, name) self.events = [ ConnectEvent(self.on_connect), DisconnectEvent(self.on_disconnect), PeerConnectEvent(self.on_peer_connect), PeerDisconnectEvent(self.on_peer_disconnect), ModListEvent(self.on_modlist), PeerModListEvent(self.on_peer_modlist), TickEvent(self.on_tick), StartEvent(self.on_start), StopEvent(self.on_stop), # custom events BotEvent("audio", "level", arg_types=(int, int, int), callee=self.event_audio_level), BotEvent("audio", "state", arg_types=(str, ), callee=self.event_audio_state), BotEvent("audio", "active", arg_types=(bool, ), callee=self.event_audio_active), BotEvent("audio", "listen_url", arg_types=(str, ), callee=self.event_audio_listen_url), BotEvent("audio", "location", arg_types=(str, ), callee=self.event_audio_location), BotEvent("pinger", "check", arg_types=(str, str), callee=self.event_pinger_check), BotEvent("player", "play", arg_types=(str, str), callee=self.event_player_play), BotEvent("player", "stop", arg_types=(str, ), callee=self.event_player_stop), BotEvent("player", "mode", arg_types=(str, str), callee=self.event_player_mode), BotEvent("player", "chime", arg_types=(bool, ), callee=self.event_player_chime) ] self.audios = {} self.pending_audios = {} self.players = {} self.pending_players = {} self.listener = listener self.tick = tick self.ping_lost = [] self.non_idle_audios = [] self.primary_non_idle_audio = None self.active_audios = [] self.primary_active_audio = None
def __init__(self): BotMod.__init__(self, "echo") self.cmds = [BotCmd("echo", callee=self.cmd_echo)]