diff --git a/app.py b/app.py index 64be5ca..ee782fa 100644 --- a/app.py +++ b/app.py @@ -36,19 +36,26 @@ def create_app(config_name='default'): for handler_name in available_handlers: if handler_name == 'crypto': docs += f""" -
  • /rss/{handler_name}?pair=ETH-USDT - ETH价格
  • -
  • /rss/{handler_name}?pair=BTC-USDT - BTC价格
  • +
  • /rss/{handler_name} - 默认加密货币价格
  • +
  • /rss/{handler_name}/eth/usdt - ETH/USDT价格
  • +
  • /rss/{handler_name}/btc/usdt - BTC/USDT价格
  • +
  • /rss/{handler_name}/ETH/USDC - ETH/USDC价格(大写)
  • """ docs += """

    使用说明:

    将RSS链接粘贴到您的墨水屏RSS阅读器中即可。

    +

    URL格式:/rss/crypto/[base_currency]/[quote_currency]

    +

    例如:/rss/crypto/eth/usdc 或 /rss/crypto/ETH/USDC 都表示 ETH-USDC 交易对

    +

    支持大小写混合格式

    """ return docs @app.route('/rss/') - def rss_feed(handler_name): + @app.route('/rss//') + @app.route('/rss///') + def rss_feed(handler_name, base_currency=None, quote_currency=None): """RSS订阅源端点""" handler = handler_registry.get_handler(handler_name) @@ -56,8 +63,26 @@ def create_app(config_name='default'): return Response("Handler not found", status=404) try: - # 获取查询参数 - request_params = request.args.to_dict() + # 构建请求参数 + request_params = {} + + # 处理crypto handler的特殊逻辑 + if handler_name == 'crypto': + if base_currency and quote_currency: + # 将路径参数转换为pair格式 + pair = f"{base_currency.upper()}-{quote_currency.upper()}" + request_params['pair'] = pair + elif base_currency and not quote_currency: + # 只有base_currency,使用默认quote_currency (通常是USDC) + default_quote = 'USDC' # 你可以在config中配置这个默认值 + pair = f"{base_currency.upper()}-{default_quote}" + request_params['pair'] = pair + else: + # 使用默认pair + request_params['pair'] = app.config.get('DEFAULT_CRYPTO_PAIR', 'BTC-USDT') + + # 合并其他查询参数(如果有的话) + request_params.update(request.args.to_dict()) # 让处理器处理请求 items = handler.handle(**request_params) @@ -66,7 +91,7 @@ def create_app(config_name='default'): return Response("No data available", status=204) if handler_name == 'crypto': - motdTitle = request_params.get('pair', app.config['DEFAULT_CRYPTO_PAIR']) + motdTitle = request_params.get('pair', app.config.get('DEFAULT_CRYPTO_PAIR', 'BTC-USDT')) motdTitle = motdTitle.replace('-', '/').upper() rss_xml = rss_generator.generate_rss(items, motdTitle=motdTitle) else: @@ -92,6 +117,8 @@ def create_app(config_name='default'): return app +app = create_app('production') # 生产环境使用production配置 + if __name__ == '__main__': app = create_app('development') - app.run(host='0.0.0.0', port=5000, debug=True) \ No newline at end of file +app.run(host='0.0.0.0', port=5000, debug=True) \ No newline at end of file