Commit 5510db8
Changed files (4)
src
src/asr/gemini_asr.py
@@ -80,7 +80,7 @@ Notes:
for api_key in api_keys.split(","):
try:
logger.debug(f"ASR via {model_id}: {path.as_posix()} , proxy={GEMINI.PROXY}")
- http_options = HttpOptions(base_url=GEMINI.BASR_URL, async_client_args={"proxy": GEMINI.PROXY})
+ http_options = HttpOptions(base_url=GEMINI.BASE_URL, async_client_args={"proxy": GEMINI.PROXY})
http_options = hook_gemini_httpoptions(http_options, message)
app = genai.Client(api_key=api_key, http_options=http_options)
uploaded_audio = await app.aio.files.upload(file=path, config=UploadFileConfig(mime_type=f"audio/{voice_format}"))
@@ -165,7 +165,7 @@ async def gemini_nonstream_asr(path: str | Path, voice_format: str, *, prompt: s
for key in api_keys:
try:
logger.debug(f"ASR via {GEMINI.ASR_MODEL}: {path.as_posix()} , proxy={GEMINI.PROXY}")
- client = genai.Client(api_key=key, http_options=HttpOptions(base_url=GEMINI.BASR_URL, async_client_args={"proxy": GEMINI.PROXY}))
+ client = genai.Client(api_key=key, http_options=HttpOptions(base_url=GEMINI.BASE_URL, async_client_args={"proxy": GEMINI.PROXY}))
uploaded_audio = await client.aio.files.upload(file=path, config=UploadFileConfig(mime_type=f"audio/{voice_format}"))
logger.debug(uploaded_audio)
contents = [prompt, uploaded_audio] if prompt else [uploaded_audio]
src/llm/gemini.py
@@ -139,7 +139,7 @@ async def gemini_stream(
await modify_progress(message=init_status_msg, text=last_error, force_update=True)
return {"error": last_error}
api_key = kwargs.get("gemini_api_key", api_keys[retry])
- http_options = HttpOptions(base_url=GEMINI.BASR_URL, async_client_args={"proxy": GEMINI.PROXY})
+ http_options = HttpOptions(base_url=GEMINI.BASE_URL, async_client_args={"proxy": GEMINI.PROXY})
http_options = hook_gemini_httpoptions(http_options, message)
app = genai.Client(api_key=api_key, http_options=http_options)
# Construct the request params
@@ -262,7 +262,7 @@ async def gemini_nonstream(
if retry > len(api_keys) - 1:
return {}
api_key = kwargs.get("gemini_api_key", api_keys[retry])
- http_options = HttpOptions(base_url=GEMINI.BASR_URL, async_client_args={"proxy": GEMINI.PROXY})
+ http_options = HttpOptions(base_url=GEMINI.BASE_URL, async_client_args={"proxy": GEMINI.PROXY})
http_options = hook_gemini_httpoptions(http_options, message)
app = genai.Client(api_key=api_key, http_options=http_options)
# Construct the request params
src/others/danmu.py
@@ -54,7 +54,7 @@ async def query_danmu(client: Client, message: Message, *, show_name: bool = Tru
if equal_prefix(message.text, prefix=[PREFIX.DANMU]):
await send2tg(client, message, texts=HELP, **kwargs)
return
- if not DANMU.BASR_URL:
+ if not DANMU.BASE_URL:
await send2tg(client, message, texts="⚠️请联系管理员配置API地址", **kwargs)
return
match_time = ""
@@ -100,7 +100,7 @@ async def query_danmu(client: Client, message: Message, *, show_name: bool = Tru
logger.debug(f"Query: {payload}")
status_msg = (await send2tg(client, message, texts=caption, **kwargs))[0]
kwargs["progress"] = status_msg
- resp = await hx_req(DANMU.BASR_URL + "/liveChat/queryList", "POST", data=payload, proxy=DANMU.PROXY, check_kv={"code": 0}, silent=True)
+ resp = await hx_req(DANMU.BASE_URL + "/liveChat/queryList", "POST", data=payload, proxy=DANMU.PROXY, check_kv={"code": 0}, silent=True)
count = resp["count"]
if count == 0:
await modify_progress(message=status_msg, text=caption + "\n⚠️未找到匹配弹幕", force_update=True, **kwargs)
@@ -116,7 +116,7 @@ async def query_danmu(client: Client, message: Message, *, show_name: bool = Tru
page += 1
payload["page"] = page
logger.debug(f"Query: {payload}")
- resp = await hx_req(DANMU.BASR_URL + "/liveChat/queryList", "POST", data=payload, proxy=DANMU.PROXY, check_kv={"code": 0}, silent=True)
+ resp = await hx_req(DANMU.BASE_URL + "/liveChat/queryList", "POST", data=payload, proxy=DANMU.PROXY, check_kv={"code": 0}, silent=True)
parsed = parse_danmu(resp["data"], super_chats, show_name=show_name)
danmu += parsed["danmu"]
processed += parsed["num_messages"]
@@ -159,14 +159,14 @@ async def sync_danmu_to_r2() -> None:
for date in server_dates:
saved_ids = [f"{x['timestamp']}{x['authorName']}" for x in results]
payload = {"page": 1, "limit": DANMU.NUM_PER_QUERY, "liveDate": date, "message": "", "authorName": ""}
- resp = await hx_req(DANMU.BASR_URL + "/liveChat/queryList", "POST", data=payload, proxy=DANMU.PROXY, check_kv={"code": 0}, silent=True)
+ resp = await hx_req(DANMU.BASE_URL + "/liveChat/queryList", "POST", data=payload, proxy=DANMU.PROXY, check_kv={"code": 0}, silent=True)
count = resp["count"]
keep_keys = ["timestamp", "authorName", "message", "scAmount"]
results.extend([{key: danmu[key] for key in keep_keys if danmu.get(key) and f"{danmu['timestamp']}{danmu['authorName']}" not in saved_ids} for danmu in resp["data"]])
while len(results) < count:
payload["page"] += 1
logger.debug(f"Query: {payload}")
- resp = await hx_req(DANMU.BASR_URL + "/liveChat/queryList", "POST", data=payload, proxy=DANMU.PROXY, check_kv={"code": 0}, silent=True)
+ resp = await hx_req(DANMU.BASE_URL + "/liveChat/queryList", "POST", data=payload, proxy=DANMU.PROXY, check_kv={"code": 0}, silent=True)
results.extend([{key: danmu[key] for key in keep_keys if danmu.get(key) and f"{danmu['timestamp']}{danmu['authorName']}" not in saved_ids} for danmu in resp["data"]])
await set_cf_r2(DANMU.R2_PREFIX + norm_date, results, compress=True)
@@ -181,7 +181,7 @@ async def sync_danmu_to_r2() -> None:
for year in years:
r2 = await list_cf_r2(prefix=DANMU.R2_PREFIX + f"{year}-")
saved_dates = [x.removeprefix(DANMU.R2_PREFIX) for x in glom(r2, "Contents.*.Key", default=[])]
- api = f"{DANMU.BASR_URL}/liveInfo/queryListBySelector?liveDate={year}"
+ api = f"{DANMU.BASE_URL}/liveInfo/queryListBySelector?liveDate={year}"
resp = await hx_req(api, proxy=DANMU.PROXY, silent=True)
dates_map = defaultdict(list)
# some live dates on server are "2025-04-14_01", "2025-04-14_02", ...
@@ -242,11 +242,11 @@ async def sync_danmu_to_d1() -> None:
saved_items = [f"{x['time']}{x['uid']}" for x in flatten(glom(resp, "result.*.results", default=[]))]
page = 1
payload = {"page": page, "limit": DANMU.NUM_PER_QUERY, "liveDate": f"{now:%Y-%m-%d}", "message": "", "authorName": ""}
- resp = await hx_req(DANMU.BASR_URL + "/liveChat/queryList", "POST", data=payload, proxy=DANMU.PROXY, check_kv={"code": 0}, silent=True)
+ resp = await hx_req(DANMU.BASE_URL + "/liveChat/queryList", "POST", data=payload, proxy=DANMU.PROXY, check_kv={"code": 0}, silent=True)
count = resp["count"]
processed = await batch_sync(resp["data"], saved_items)
while processed < count:
page += 1
payload["page"] = page
- resp = await hx_req(DANMU.BASR_URL + "/liveChat/queryList", "POST", data=payload, proxy=DANMU.PROXY, check_kv={"code": 0}, silent=True)
+ resp = await hx_req(DANMU.BASE_URL + "/liveChat/queryList", "POST", data=payload, proxy=DANMU.PROXY, check_kv={"code": 0}, silent=True)
processed += await batch_sync(resp["data"], saved_items)
src/config.py
@@ -99,7 +99,7 @@ class API:
class DANMU:
- BASR_URL = os.getenv("DANMU_BASR_URL", "") # Custom API, No docs
+ BASE_URL = os.getenv("DANMU_BASE_URL", "") # Custom API, No docs
PROXY = os.getenv("DANMU_PROXY", None) # socks5://127.0.0.1:7890
NUM_PER_QUERY = int(os.getenv("DANMU_NUM_PER_QUERY", "100")) # Number of items per query
D1_DATABASE = os.getenv("DANMU_D1_DATABASE", "bennybot-danmu")
@@ -309,7 +309,7 @@ class GPT:
class GEMINI: # Official Gemini
# https://ai.google.dev/gemini-api/docs/image-generation
- BASR_URL = os.getenv("GEMINI_BASR_URL", "https://generativelanguage.googleapis.com/")
+ BASE_URL = os.getenv("GEMINI_BASE_URL", "https://generativelanguage.googleapis.com/")
API_KEY = os.getenv("GEMINI_API_KEY", "") # comma separated keys for load balance. e.g. "key1,key2,key3"
PROXY = os.getenv("GEMINI_PROXY", None)
PREFER_LANG = os.getenv("GEMINI_PREFER_LANG", "") # Set a prefer response language for Gemini