315 lines
9.0 KiB
Python
315 lines
9.0 KiB
Python
"""
|
||
新闻源配置
|
||
定义各类新闻的 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 ETF', 'ETF approved', 'ETF rejected', 'regulation ban',
|
||
'监管禁令', 'ETF批准', 'ETF拒绝',
|
||
|
||
# 重大事件(只保留真正重大的)
|
||
'hack $', 'exploit $', ' $ billion hack', # 需要金额上下文,避免普通新闻
|
||
'bankruptcy', '破产', 'shut down', '暂停交易',
|
||
'exchange collapse', '交易所倒闭',
|
||
|
||
# 超级机构(重大新闻才推送)
|
||
'BlackRock ETF', 'Grayscale ETF', 'Fidelity ETF',
|
||
'贝莱德ETF', '灰度ETF',
|
||
|
||
# 重大安全事故
|
||
'bridge exploit', 'smart contract hack', '$ million stolen',
|
||
'跨链桥攻击', '智能合约漏洞',
|
||
],
|
||
'medium_impact': [
|
||
# 一般监管
|
||
'SEC', 'regulation', 'legal', '合规', '监管',
|
||
'approve', 'ban', '禁令',
|
||
|
||
# 市场动态(常见的价格波动)
|
||
'ATH', 'all-time high', 'crash', 'surge', 'plunge',
|
||
'历史新高', '暴跌', '暴涨', '突破',
|
||
|
||
# 技术更新
|
||
'upgrade', 'fork', 'airdrop', 'launch',
|
||
'升级', '分叉', '空投', '上线',
|
||
|
||
# 并购/合作
|
||
'partnership', 'acquisition', 'merger',
|
||
'合作', '并购', '收购',
|
||
|
||
# 宏观经济
|
||
'fed', 'inflation', 'recession', 'interest rate',
|
||
'美联储', '通胀', '加息', '降息',
|
||
|
||
# 机构和钱包
|
||
'whale', 'wallet', 'exchange',
|
||
'巨鲸', '钱包', '交易所',
|
||
]
|
||
}
|
||
|
||
STOCK_KEYWORDS = {
|
||
'high_impact': [
|
||
# 只保留真正重大、罕见的事件
|
||
# 破产/退市级别
|
||
'bankruptcy', 'delisting', 'fraud', 'scandal',
|
||
'破产', '退市', '欺诈', '丑闻',
|
||
|
||
# 重大监管事件
|
||
'antitrust', 'DOJ ', 'SEC investigation', 'sanction',
|
||
'反垄断', '司法部', '证监会调查', '制裁',
|
||
|
||
# 超级并购/分拆
|
||
'mega merger', 'mega acquisition', 'breakup', 'spinoff',
|
||
'巨型并购', '分拆',
|
||
|
||
# 重大安全事故/风险
|
||
'data breach', 'cyber attack', 'massive layoff', 'shutdown',
|
||
'数据泄露', '网络攻击', '大规模裁员', '停产',
|
||
],
|
||
'medium_impact': [
|
||
# 财报相关(移到这里,因为太常见)
|
||
'earnings', 'revenue', 'profit', 'loss', 'guidance',
|
||
'财报', '营收', '利润', '业绩预告',
|
||
'beat', 'miss', 'surprise',
|
||
'超预期', '不及预期',
|
||
|
||
# 一般事件
|
||
'FDA', 'approval', 'recall', 'lawsuit', 'IPO',
|
||
'批准', '召回', '诉讼', '上市',
|
||
|
||
# 并购重组(一般规模)
|
||
'merger', 'acquisition', 'buyout',
|
||
'并购', '收购', '重组',
|
||
|
||
# 市场动态
|
||
'surge', 'plunge', 'rally', 'crash',
|
||
'暴涨', '暴跌', '反弹', '崩盘',
|
||
|
||
# 管理层变动
|
||
'CEO', 'CFO', 'resign', 'appoint', 'executive',
|
||
'辞职', '任命',
|
||
|
||
# 评级相关
|
||
'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', '摩根大通'],
|
||
}
|