| import os |
| import sys |
| import asyncio |
| from loguru import logger |
|
|
| |
| project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) |
| sys.path.insert(0, project_root) |
|
|
| from src.open_llm_vtuber.live.bilibili_live import BiliBiliLivePlatform |
| from src.open_llm_vtuber.config_manager.utils import read_yaml, validate_config |
|
|
|
|
| async def main(): |
| """ |
| Main function to run the BiliBili Live platform client. |
| Connects to BiliBili Live room and forwards danmaku messages to the VTuber. |
| """ |
| logger.info("Starting BiliBili Live platform client") |
|
|
| try: |
| |
| config_path = os.path.join(project_root, "conf.yaml") |
| config_data = read_yaml(config_path) |
| config = validate_config(config_data) |
|
|
| |
| bilibili_config = config.live_config.bilibili_live |
|
|
| |
| if not bilibili_config.room_ids: |
| logger.error( |
| "No BiliBili room IDs specified in configuration. Please add at least one room ID." |
| ) |
| return |
|
|
| logger.info(f"Connecting to BiliBili Live rooms: {bilibili_config.room_ids}") |
|
|
| |
| platform = BiliBiliLivePlatform( |
| room_ids=bilibili_config.room_ids, sessdata=bilibili_config.sessdata |
| ) |
|
|
| await platform.run() |
|
|
| except ImportError as e: |
| logger.error(f"Failed to import required modules: {e}") |
| logger.error("Make sure you have installed blivedm with: pip install blivedm") |
| except Exception as e: |
| logger.error(f"Error starting BiliBili Live client: {e}") |
| import traceback |
|
|
| logger.debug(traceback.format_exc()) |
|
|
|
|
| if __name__ == "__main__": |
| try: |
| asyncio.run(main()) |
| except KeyboardInterrupt: |
| logger.info("Shutting down BiliBili Live platform") |
|
|
| |
|
|