diff --git a/cryptoai/routes/crypto.py b/cryptoai/routes/crypto.py index 24c8e3e..6390b7f 100644 --- a/cryptoai/routes/crypto.py +++ b/cryptoai/routes/crypto.py @@ -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 = {}