stock-ai-agent/backend/app/news_agent/sources.py
2026-02-25 19:59:20 +08:00

278 lines
7.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
新闻源配置
定义各类新闻的 RSS 源
"""
# 加密货币新闻源
CRYPTO_NEWS_SOURCES = [
{
"name": "Cointelegraph",
"url": "https://cointelegraph.com/rss",
"category": "crypto",
"language": "en",
"priority": 1.0, # 权重
"enabled": True
},
{
"name": "CoinDesk",
"url": "https://www.coindesk.com/arc/outboundfeeds/rss/",
"category": "crypto",
"language": "en",
"priority": 1.0,
"enabled": True
},
{
"name": "Decrypt",
"url": "https://decrypt.co/feed",
"category": "crypto",
"language": "en",
"priority": 0.9,
"enabled": True
},
{
"name": "The Block",
"url": "https://www.theblock.co/rss.xml",
"category": "crypto",
"language": "en",
"priority": 0.9,
"enabled": True
},
{
"name": "律动 BlockBeats",
"url": "https://www.theblockbeats.info/feed",
"category": "crypto",
"language": "zh",
"priority": 1.0,
"enabled": False # RSS 格式问题,暂时禁用
},
{
"name": "巴比特",
"url": "https://www.8btc.com/feed",
"category": "crypto",
"language": "zh",
"priority": 0.8,
"enabled": False # 连接不稳定,暂时禁用
},
{
"name": "CoinGlass",
"url": "https://coinglass.com/news/rss",
"category": "crypto",
"language": "en",
"priority": 0.8,
"enabled": False # 返回 HTML 而非 RSS暂时禁用
},
{
"name": "CryptoSlate",
"url": "https://cryptoslate.com/news/feed",
"category": "crypto",
"language": "en",
"priority": 0.8,
"enabled": False # RSS 格式问题,暂时禁用
},
{
"name": "AMBCrypto",
"url": "https://ambcrypto.com/feed",
"category": "crypto",
"language": "en",
"priority": 0.7,
"enabled": True
},
{
"name": "Whale Alert",
"url": "https://whale-alert.io/rss",
"category": "crypto",
"language": "en",
"priority": 0.7,
"enabled": False # 大额转账,可选择性开启
},
]
# 股票新闻源
STOCK_NEWS_SOURCES = [
{
"name": "Reuters Business",
"url": "https://www.reuters.com/finance/rss",
"category": "stock",
"language": "en",
"priority": 1.0,
"enabled": False # 返回 HTML 而非 RSS暂时禁用
},
{
"name": "CNBC",
"url": "https://www.cnbc.com/id/100003114/device/rss/rss.html",
"category": "stock",
"language": "en",
"priority": 1.0,
"enabled": True
},
{
"name": "Bloomberg Markets",
"url": "https://feeds.bloomberg.com/markets/news.rss",
"category": "stock",
"language": "en",
"priority": 1.0,
"enabled": True
},
{
"name": "Yahoo Finance",
"url": "https://finance.yahoo.com/news/rssindex",
"category": "stock",
"language": "en",
"priority": 0.8,
"enabled": True
},
{
"name": "MarketWatch",
"url": "https://www.marketwatch.com/rss/topstories",
"category": "stock",
"language": "en",
"priority": 0.9,
"enabled": True
},
{
"name": "Seeking Alpha",
"url": "https://seekingalpha.com/article/rss",
"category": "stock",
"language": "en",
"priority": 0.9,
"enabled": False # RSS 格式问题,暂时禁用
},
{
"name": "华尔街见闻",
"url": "https://wallstreetcn.com/rss",
"category": "stock",
"language": "zh",
"priority": 0.9,
"enabled": False # RSS 格式问题,暂时禁用
},
{
"name": "雪球",
"url": "https://xueqiu.com/statuses/hot_stock.xml",
"category": "stock",
"language": "zh",
"priority": 0.8,
"enabled": False # 需要认证,暂时禁用
},
{
"name": "Investing.com",
"url": "https://www.investing.com/rss/news.rss",
"category": "stock",
"language": "en",
"priority": 0.8,
"enabled": True
},
{
"name": "Business Insider",
"url": "https://markets.businessinsider.com/rss/news",
"category": "stock",
"language": "en",
"priority": 0.7,
"enabled": True
},
]
# 获取所有启用的新闻源
def get_enabled_sources(category: str = None) -> list:
"""
获取启用的新闻源
Args:
category: 分类过滤 ('crypto', 'stock', None 表示全部)
Returns:
启用的新闻源列表
"""
all_sources = CRYPTO_NEWS_SOURCES + STOCK_NEWS_SOURCES
if category:
return [s for s in all_sources if s['enabled'] and s['category'] == category]
return [s for s in all_sources if s['enabled']]
# 关键词配置 - 用于第一级过滤
CRYPTO_KEYWORDS = {
'high_impact': [
# 监管相关
'SEC', 'regulation', 'ban', 'approve', 'ETF', 'legal',
'监管', '批准', '合法化', '禁令',
# 重大事件
'hack', 'exploit', 'bankruptcy', 'acquisition', 'merger',
'blackrock', 'grayscale', 'fidelity', '比特大陆', '币安',
# 市场动态
'all-time high', ' ATH ', 'crash', 'surge', 'plunge',
'历史新高', '暴跌', '暴涨', '突破',
# 技术更新
'upgrade', 'fork', 'airdrop', 'launch',
'升级', '分叉', '空投', '上线',
# 宏观经济
'fed', 'inflation', 'recession', 'interest rate',
'美联储', '通胀', '加息', '降息',
],
'medium_impact': [
'partnership', 'integration', 'listing', 'delisting',
'合作', '上线', '下架',
'whale', 'wallet', 'exchange',
]
}
STOCK_KEYWORDS = {
'high_impact': [
# 财报相关
'earnings', 'revenue', 'profit', 'loss', 'guidance',
'财报', '营收', '利润', '业绩预告',
# 重大事件
'FDA', 'approval', 'recall', 'lawsuit', 'IPO',
'批准', '召回', '诉讼', '上市',
# 并购重组
'merger', 'acquisition', 'spinoff', 'buyout',
'并购', '收购', '重组',
# 市场动态
'beat', 'miss', 'surge', 'plunge', 'rally',
'超预期', '不及预期', '暴涨', '暴跌', '反弹',
# 管理层变动
'CEO', 'CFO', 'resign', 'appoint', 'executive',
'辞职', '任命', 'CEO',
],
'medium_impact': [
'upgrade', 'downgrade', 'rating', 'target price',
'评级', '目标价', '上调', '下调',
'dividend', 'buyback', 'split',
'分红', '回购', '拆股',
]
}
# 常见的币种和股票代码映射
SYMBOL_MAPPINGS = {
# 加密货币
'BTC': ['bitcoin', 'btc', '比特币'],
'ETH': ['ethereum', 'eth', '以太坊'],
'BNB': ['binance', 'bnb', '币安'],
'SOL': ['solana', 'sol'],
'XRP': ['ripple', 'xrp'],
'ADA': ['cardano', 'ada'],
'DOGE': ['dogecoin', 'doge', '狗狗币'],
'AVAX': ['avalanche', 'avax'],
'DOT': ['polkadot', 'dot'],
'MATIC': ['polygon', 'matic'],
# 美股
'AAPL': ['apple', 'aapl', '苹果'],
'NVDA': ['nvidia', 'nvda', '英伟达'],
'MSFT': ['microsoft', 'msft', '微软'],
'GOOGL': ['google', 'alphabet', 'googl', '谷歌'],
'AMZN': ['amazon', 'amzn', '亚马逊'],
'TSLA': ['tesla', 'tsla', '特斯拉'],
'META': ['meta', 'facebook', 'meta'],
'BRK.B': ['berkshire', 'buffett', '伯克希尔'],
'JPM': ['jpmorgan', 'jpm', '摩根大通'],
}