yangtb24 commited on
Commit
ae8d22c
·
verified ·
1 Parent(s): 3453169

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +67 -14
app.py CHANGED
@@ -2,6 +2,7 @@ import os
2
  import time
3
  import logging
4
  import requests
 
5
  from apscheduler.schedulers.background import BackgroundScheduler
6
  from flask import Flask, request, jsonify, Response, stream_with_context
7
 
@@ -326,27 +327,79 @@ def list_models():
326
  "free_models": free_models
327
  })
328
 
329
- @app.route('/handsome/v1/dashboard/billing', methods=['GET'])
330
- def billing_info():
331
  """
332
- 处理 /handsome/v1/dashboard/billing 路由的请求,返回所有余额大于0的key的总和。
333
  """
334
- if not check_authorization(request):
335
- return jsonify({"error": "Unauthorized"}), 401
336
-
337
  total_balance = 0
338
- # 遍历 valid_keys_global 和 unverified_keys_global 获取总余额
339
  for key in valid_keys_global + unverified_keys_global:
340
  credit_summary = get_credit_summary(key)
341
- if credit_summary and credit_summary.get("total_balance", 0) > 0:
342
- total_balance += credit_summary["total_balance"]
343
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
344
  return jsonify({
345
- "total_granted": total_balance, # 使用 total_granted 字段
346
- "total_usage": 0, # 暂时设置为0,因为没有使用量数据
347
- "total_available": total_balance,
348
  "has_payment_method": False,
349
- "object": "billing_summary"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
350
  })
351
 
352
  if __name__ == '__main__':
 
2
  import time
3
  import logging
4
  import requests
5
+ from datetime import datetime, timedelta
6
  from apscheduler.schedulers.background import BackgroundScheduler
7
  from flask import Flask, request, jsonify, Response, stream_with_context
8
 
 
327
  "free_models": free_models
328
  })
329
 
330
+ def get_billing_info():
 
331
  """
332
+ 获取所有KEY的额度信息。
333
  """
 
 
 
334
  total_balance = 0
 
335
  for key in valid_keys_global + unverified_keys_global:
336
  credit_summary = get_credit_summary(key)
337
+ if credit_summary:
338
+ total_balance += credit_summary.get("total_balance", 0)
339
+ return total_balance
340
+
341
+ @app.route('/handsome/v1/dashboard/billing/usage', methods=['GET'])
342
+ def billing_usage():
343
+ """
344
+ 处理 /handsome/v1/dashboard/billing/usage 路由的请求,返回用量信息(模拟)。
345
+ """
346
+ if not check_authorization(request):
347
+ return jsonify({"error": "Unauthorized"}), 401
348
+
349
+ # 获取当前时间和30天前的时间
350
+ end_date = datetime.now()
351
+ start_date = end_date - timedelta(days=30)
352
+
353
+ # 构造用量数据(模拟)
354
+ daily_usage = []
355
+ current_date = start_date
356
+ while current_date <= end_date:
357
+ # 假设每天的用量是总额度的 1/1000
358
+ daily_usage.append({
359
+ "timestamp": int(current_date.timestamp()),
360
+ "daily_usage": get_billing_info() / 1000
361
+ })
362
+ current_date += timedelta(days=1)
363
+
364
+ return jsonify({
365
+ "object": "list",
366
+ "data": daily_usage,
367
+ "total_usage": sum(day["daily_usage"] for day in daily_usage)
368
+ })
369
+
370
+ @app.route('/handsome/v1/dashboard/billing/subscription', methods=['GET'])
371
+ def billing_subscription():
372
+ """
373
+ 处理 /handsome/v1/dashboard/billing/subscription 路由的请求,返回订阅信息。
374
+ """
375
+ if not check_authorization(request):
376
+ return jsonify({"error": "Unauthorized"}), 401
377
+
378
+ total_balance = get_billing_info()
379
+
380
  return jsonify({
381
+ "object": "billing_subscription",
 
 
382
  "has_payment_method": False,
383
+ "canceled": False,
384
+ "canceled_at": None,
385
+ "delinquent": None,
386
+ "access_until": int(datetime(9999, 12, 31).timestamp()), # 设置一个较远的未来时间
387
+ "soft_limit": 0,
388
+ "hard_limit": total_balance,
389
+ "system_hard_limit": total_balance,
390
+ "soft_limit_usd": 0,
391
+ "hard_limit_usd": total_balance,
392
+ "system_hard_limit_usd": total_balance,
393
+ "plan": {
394
+ "name": "SiliconFlow API",
395
+ "id": "siliconflow-api"
396
+ },
397
+ "account_name": "SiliconFlow User",
398
+ "po_number": None,
399
+ "billing_email": None,
400
+ "tax_ids": [],
401
+ "billing_address": None,
402
+ "business_address": None
403
  })
404
 
405
  if __name__ == '__main__':