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