* feat: add Xueqiu (雪球) channel for stock quotes and community posts Add a Tier 0 (zero-config) channel for Xueqiu, China's popular stock market and investment community platform. Uses auto-generated session cookies via http.cookiejar — no login required. Supported methods: - get_stock_quote(symbol) — real-time quotes (A/HK/US markets) - search_stock(query) — search by name or code - get_hot_posts(limit) — trending community posts - get_hot_stocks(limit, stock_type) — popular stocks leaderboard Inspired by https://github.com/jackwener/opencli xueqiu implementation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: add Xueqiu to README platform tables, remove stale Instagram ref Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: fernando_jacob <f.jacob1996@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
66 lines
1.5 KiB
Python
66 lines
1.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Channel registry — lists all supported platforms for doctor checks.
|
|
"""
|
|
|
|
from typing import List, Optional
|
|
from .base import Channel
|
|
|
|
# Import all channels
|
|
from .web import WebChannel
|
|
from .github import GitHubChannel
|
|
from .twitter import TwitterChannel
|
|
from .youtube import YouTubeChannel
|
|
from .reddit import RedditChannel
|
|
from .rss import RSSChannel
|
|
from .bilibili import BilibiliChannel
|
|
from .exa_search import ExaSearchChannel
|
|
from .xiaohongshu import XiaoHongShuChannel
|
|
from .douyin import DouyinChannel
|
|
from .linkedin import LinkedInChannel
|
|
from .wechat import WeChatChannel
|
|
from .weibo import WeiboChannel
|
|
from .xiaoyuzhou import XiaoyuzhouChannel
|
|
from .v2ex import V2EXChannel
|
|
from .xueqiu import XueqiuChannel
|
|
|
|
|
|
|
|
ALL_CHANNELS: List[Channel] = [
|
|
GitHubChannel(),
|
|
TwitterChannel(),
|
|
YouTubeChannel(),
|
|
RedditChannel(),
|
|
BilibiliChannel(),
|
|
XiaoHongShuChannel(),
|
|
DouyinChannel(),
|
|
LinkedInChannel(),
|
|
WeChatChannel(),
|
|
WeiboChannel(),
|
|
XiaoyuzhouChannel(),
|
|
V2EXChannel(),
|
|
XueqiuChannel(),
|
|
RSSChannel(),
|
|
ExaSearchChannel(),
|
|
WebChannel(),
|
|
]
|
|
|
|
|
|
def get_channel(name: str) -> Optional[Channel]:
|
|
"""Get a channel by name."""
|
|
for ch in ALL_CHANNELS:
|
|
if ch.name == name:
|
|
return ch
|
|
return None
|
|
|
|
|
|
def get_all_channels() -> List[Channel]:
|
|
"""Get all registered channels."""
|
|
return ALL_CHANNELS
|
|
|
|
|
|
__all__ = [
|
|
"Channel",
|
|
"ALL_CHANNELS",
|
|
"get_channel", "get_all_channels",
|
|
]
|