Files
banban/talkingq-url/services/offline_audio_cache.py
HycJack f9f1183e4b 休眠时段操作小程序加提示,博士角色语速调快一点,
刷自己卡没有留言情况下播放最后一条留言,增加角色切换提示音。
2026-05-26 01:50:23 +08:00

42 lines
1.4 KiB
Python

import asyncio
from typing import Dict, List
class OfflineAudioCache:
def __init__(self):
self.offline_audio: Dict[str, List[str]] = {}
self.lock = asyncio.Lock()
async def add_audio_url(self, device_id: str, audio_url: str):
async with self.lock:
if device_id not in self.offline_audio:
self.offline_audio[device_id] = []
self.offline_audio[device_id].append(audio_url)
async def get_audio_urls(self, device_id: str) -> List[str]:
async with self.lock:
return list(self.offline_audio.get(device_id, []))
async def pop_audio_urls(self, device_id: str) -> List[str]:
urls = await self.get_audio_urls(device_id)
if urls and len(urls) > 1:
async with self.lock:
return self.offline_audio.pop(device_id, [])
return urls
async def clear_audio_urls(self, device_id: str):
async with self.lock:
if device_id in self.offline_audio:
del self.offline_audio[device_id]
async def has_pending_audio(self, device_id: str) -> bool:
async with self.lock:
return device_id in self.offline_audio and len(self.offline_audio[device_id]) > 0
async def get_all_audio_cache(self) -> List[str]:
async with self.lock:
return self.offline_audio
# 单例实例
offline_audio_cache = OfflineAudioCache()