feat: user-customizable event voice rules (gift/blind box/enter/follow/like/guard/super chat)
- New event_rules.py: load/save event_rules.json, robust template renderer (missing vars -> empty, empty template -> muted), guard level mapping - danmaku_handler.py: custom SEND_GIFT callback to extract blind_gift_name; implements all event callbacks feeding the TTS queue per user rules - server.py: GET/POST /api/rules, load rules at startup, pass to client - Web UI: 'Event Voice Rules' panel (per-event toggle + template + save) - main.py CLI loads rules; build.py bundles event_rules.json - skip_free_gift option to mute silver free gifts - Rebuild portable zip (83.8 MB)
This commit is contained in:
@@ -13,6 +13,7 @@ import sys
|
||||
|
||||
from danmaku_handler import DanmakuClient
|
||||
from chinese2kana import chinese_to_kana, filter_kana
|
||||
from event_rules import load_rules
|
||||
from tts import TTSBridge
|
||||
from audio_player import play_wav_async, get_output_devices
|
||||
|
||||
@@ -71,9 +72,11 @@ async def main_async(args: argparse.Namespace) -> int:
|
||||
queue: asyncio.Queue = asyncio.Queue(maxsize=256)
|
||||
shutdown_event = asyncio.Event()
|
||||
bridge = TTSBridge(voice=args.voice, speed=args.speed)
|
||||
rules = load_rules()
|
||||
danmaku_client = DanmakuClient(
|
||||
room_id=args.room_id, queue=queue,
|
||||
cookies={"SESSDATA": args.sessdata} if args.sessdata else None,
|
||||
rules=rules,
|
||||
message_format=args.format,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user