mirror of
https://github.com/migatu/conjurer.git
synced 2026-07-19 00:02:11 +00:00
aa
This commit is contained in:
+16
-8
@@ -32,8 +32,11 @@ SAMPLE_WIDTH = OpusDecoder.SAMPLE_SIZE // OpusDecoder.CHANNELS
|
|||||||
SAMPLING_RATE = OpusDecoder.SAMPLING_RATE
|
SAMPLING_RATE = OpusDecoder.SAMPLING_RATE
|
||||||
|
|
||||||
|
|
||||||
|
#rotate file after there is 0.5s between last received pcm for user.
|
||||||
|
#delete messsages after user disconnect
|
||||||
|
|
||||||
logger = logging.getLogger("discord")
|
logger = logging.getLogger("discord")
|
||||||
location = "/home/pi/Conjurer/"
|
location = "/home/pi/Conjurer/transcripts/"
|
||||||
|
|
||||||
|
|
||||||
class WaveWriter:
|
class WaveWriter:
|
||||||
@@ -43,7 +46,7 @@ class WaveWriter:
|
|||||||
self.present_file_id = 0
|
self.present_file_id = 0
|
||||||
self.file_name_past = None
|
self.file_name_past = None
|
||||||
|
|
||||||
self.file_name_present = location + self.username + str(self.present_file_id)
|
self.file_name_present = location + self.username + "_" + str(self.present_file_id)
|
||||||
self.transcript_file_present : wave.Wave_write = wave.open(
|
self.transcript_file_present : wave.Wave_write = wave.open(
|
||||||
self.file_name_present, "wb"
|
self.file_name_present, "wb"
|
||||||
)
|
)
|
||||||
@@ -51,7 +54,7 @@ class WaveWriter:
|
|||||||
self.transcript_file_present.setsampwidth(SAMPLE_WIDTH)
|
self.transcript_file_present.setsampwidth(SAMPLE_WIDTH)
|
||||||
self.transcript_file_present.setframerate(SAMPLING_RATE)
|
self.transcript_file_present.setframerate(SAMPLING_RATE)
|
||||||
|
|
||||||
self.file_name_future = location + self.username + str(self.present_file_id + 1)
|
self.file_name_future = location + self.username + "_" + str(self.present_file_id + 1)
|
||||||
self.transcript_file_future : wave.Wave_write = wave.open(
|
self.transcript_file_future : wave.Wave_write = wave.open(
|
||||||
self.file_name_future, "wb"
|
self.file_name_future, "wb"
|
||||||
)
|
)
|
||||||
@@ -66,9 +69,7 @@ class WaveWriter:
|
|||||||
self.present_file_id += 1
|
self.present_file_id += 1
|
||||||
self.file_name_present = self.file_name_future
|
self.file_name_present = self.file_name_future
|
||||||
self.transcript_file_present = self.transcript_file_future
|
self.transcript_file_present = self.transcript_file_future
|
||||||
self.transcript_file_future = (
|
self.file_name_future = location + self.username + "_" + str(self.present_file_id + 1)
|
||||||
location + self.username + str(self.present_file_id + 1)
|
|
||||||
)
|
|
||||||
self.transcript_file_future : wave.Wave_write = wave.open(
|
self.transcript_file_future : wave.Wave_write = wave.open(
|
||||||
self.file_name_future, "wb"
|
self.file_name_future, "wb"
|
||||||
)
|
)
|
||||||
@@ -106,12 +107,15 @@ class SRBuffer(voice_recv.AudioSink):
|
|||||||
|
|
||||||
def on_user_disconnect(self,username):
|
def on_user_disconnect(self,username):
|
||||||
self.wavewriter[username].cleanup()
|
self.wavewriter[username].cleanup()
|
||||||
|
self.wavewriter.pop(username)
|
||||||
|
|
||||||
|
def rotate_user(self,username):
|
||||||
|
self.wavewriter[username].rotate()
|
||||||
|
|
||||||
def wants_opus(self) -> bool:
|
def wants_opus(self) -> bool:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def write(self, user, data) -> None:
|
def write(self, user, data) -> None:
|
||||||
logger.info("user: %s", user)
|
|
||||||
self.wavewriter[str(user.id)].writeframes(data.pcm)
|
self.wavewriter[str(user.id)].writeframes(data.pcm)
|
||||||
|
|
||||||
def cleanup(self) -> None:
|
def cleanup(self) -> None:
|
||||||
@@ -160,10 +164,14 @@ class Transcriber(commands.Cog):
|
|||||||
async def on_voice_state_update(self, user, before, after):
|
async def on_voice_state_update(self, user, before, after):
|
||||||
if before.channel is None:
|
if before.channel is None:
|
||||||
logger.info("User %s connected to channel %s", user, after.channel.name)
|
logger.info("User %s connected to channel %s", user, after.channel.name)
|
||||||
|
self.wsink.on_user_connect(user.id)
|
||||||
elif after.channel is None:
|
elif after.channel is None:
|
||||||
logger.info("User %s disconnected from channel %s", user, before.channel.name)
|
logger.info("User %s disconnected from channel %s", user, before.channel.name)
|
||||||
|
self.wsink.on_user_disconnect(user.id)
|
||||||
|
elif after.self_mute or after.mute:
|
||||||
|
self.wsink.rotate_user(user.id)
|
||||||
else:
|
else:
|
||||||
logger.info("User VC status changed %s", user)
|
logger.info("User VC status changed %s", user.id)
|
||||||
logger.info("Before %s", before)
|
logger.info("Before %s", before)
|
||||||
logger.info("After %s", after)
|
logger.info("After %s", after)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user