You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向CoinMarketCap API发送逗号分隔资产列表进行价格转换

如何向CoinMarketCap发送逗号分隔的资产列表进行价格转换?

官方API文档说明,price-conversion接口支持传递最多120个逗号分隔的法币或加密货币符号,通过单次API调用即可获取多资产的价格转换结果,且仅消耗1个调用额度。但直接传入资产列表会返回400错误,循环逐个调用又会消耗多个额度,不符合预期。

以下是两种无效的尝试代码:

无效代码1:直接传入资产列表

from requests import Session
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects

def usdPrice(assets):
    url = 'https://pro-api.coinmarketcap.com/v2/tools/price-conversion'
    parameters = {
        'amount' : 1,
        'symbol': assets,  # 直接传列表会导致400错误
        'convert' : 'USD'
    }
    headers = {
        'Accepts': 'application/json',
        'X-CMC_PRO_API_KEY': cmcKey,
    }
    session = Session()
    session.headers.update(headers)
    try:
        response = session.get(url, params=parameters)
        print(response)
        data = response.json().get("data")
        print(data)
    except (ConnectionError, Timeout, TooManyRedirects) as e:
        print(e)

assets = ['BTC','XRP','LTC']
usdPrice(assets)

无效代码2:循环逐个调用API

from requests import Session
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects

def usdPrice(assets):
    url = 'https://pro-api.coinmarketcap.com/v2/tools/price-conversion'
    for i in assets:
        parameters = {
            'amount' : 1,
            'symbol': i,
            'convert' : 'USD'
        }
        headers = {
            'Accepts': 'application/json',
            'X-CMC_PRO_API_KEY': cmcKey,
        }
        session = Session()
        session.headers.update(headers)
        try:
            response = session.get(url, params=parameters)
            print(response)
            data = response.json().get("data")
            print(data)
        except (ConnectionError, Timeout, TooManyRedirects) as e:
            print(e)

assets = ['BTC','XRP','LTC']
usdPrice(assets)

正确解决方案

核心问题是需要将资产列表转换为逗号分隔的字符串传入symbol参数,而不是直接传Python列表。修改后的代码如下:

from requests import Session
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects

def usdPrice(assets):
    url = 'https://pro-api.coinmarketcap.com/v2/tools/price-conversion'
    # 将列表转为逗号分隔的字符串
    symbol_str = ','.join(assets)
    parameters = {
        'amount' : 1,
        'symbol': symbol_str,  # 传入格式化后的字符串
        'convert' : 'USD'
    }
    headers = {
        'Accepts': 'application/json',
        'X-CMC_PRO_API_KEY': cmcKey,  # 请确保cmcKey已正确定义
    }
    session = Session()
    session.headers.update(headers)
    try:
        response = session.get(url, params=parameters)
        print(response.status_code)
        data = response.json().get("data")
        # 遍历返回的多资产数据
        for item in data:
            symbol = item['symbol']
            price = item['quote']['USD']['price']
            print(f"{symbol}: ${price:.2f}")
    except (ConnectionError, Timeout, TooManyRedirects) as e:
        print(e)

assets = ['BTC','XRP','LTC']
usdPrice(assets)

关键修改点:

  • 使用','.join(assets)将资产列表转换为API要求的逗号分隔格式字符串
  • 单次调用API即可获取所有资产的转换结果,仅消耗1个额度
  • 处理返回数据时,遍历data数组即可拿到每个资产的价格信息

内容的提问来源于stack exchange,提问作者nodeidea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:50:26