This commit is contained in:
aaron 2025-08-23 21:42:55 +08:00
parent fe9c4e31b0
commit c2d19c0435

View File

@ -14,7 +14,6 @@ import requests
from cryptoai.api.binance_api import get_binance_api
from cryptoai.models.data_processor import DataProcessor
from datetime import timedelta
from cryptoai.models.token import TokenManager
from sqlalchemy.orm import Session
from cryptoai.utils.db_manager import get_db
# 创建路由
@ -25,8 +24,30 @@ logger.setLevel(logging.DEBUG)
@router.get("/search/{key}")
async def search_crypto(key: str, session: Session = Depends(get_db)):
manager = TokenManager(session)
result = manager.search_token(key)
"""
搜索加密货币交易对
从币安API获取所有USDT交易对然后根据关键字过滤
"""
binance_api = get_binance_api()
all_symbols = binance_api.get_all_symbols()
# 将搜索关键字转换为大写
key_upper = key.upper()
# 过滤包含关键字的交易对
filtered_symbols = [symbol for symbol in all_symbols if key_upper in symbol]
# 构建返回结果,格式与原来保持一致
result = []
for symbol in filtered_symbols[:20]: # 限制返回前20个结果
# 从symbol中提取基础资产名称 (如BTCUSDT -> BTC)
base_asset = symbol.replace('USDT', '') if symbol.endswith('USDT') else symbol
result.append({
"symbol": symbol,
"base_asset": base_asset,
"quote_asset": "USDT"
})
return result
class CryptoAnalysisRequest(BaseModel):
@ -35,15 +56,19 @@ class CryptoAnalysisRequest(BaseModel):
@router.get("/kline/{symbol}")
async def get_crypto_kline(symbol: str, timeframe: Optional[str] = None, limit: Optional[int] = 100, session: Session = Depends(get_db)):
# 检查symbol是否存在
token_manager = TokenManager(session)
tokens = token_manager.search_token(symbol)
if not tokens or len(tokens) == 0:
# 检查symbol是否存在 - 从币安API获取所有交易对进行验证
binance_api = get_binance_api()
all_symbols = binance_api.get_all_symbols()
# 将输入的symbol转换为大写并确保以USDT结尾
symbol_upper = symbol.upper()
if not symbol_upper.endswith('USDT'):
symbol_upper += 'USDT'
if symbol_upper not in all_symbols:
raise HTTPException(status_code=400, detail="您输入的币种在币安不存在,请检查后重新输入。")
symbol = tokens[0]["symbol"]
binance_api = get_binance_api()
symbol = symbol_upper
result = {}