* feat: add Xiaoyuzhou podcast transcription channel - New channel: 小宇宙播客 (xiaoyuzhoufm.com) → full text transcript - Uses Groq Whisper API (free, no credit card needed) - Auto-downloads audio, converts to low-bitrate MP3, splits by 25MB limit - Supports any length podcast with automatic chunking - Script installed to ~/.agent-reach/tools/xiaoyuzhou/transcribe.sh - User just needs: agent-reach configure groq-key gsk_xxxxx - Updated README (CN/EN), install.md, pyproject.toml * docs: clarify Xiaoyuzhou setup — free key, limitations, step-by-step --------- Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
64 lines
1.5 KiB
Python
64 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 .bosszhipin import BossZhipinChannel
|
|
from .wechat import WeChatChannel
|
|
from .weibo import WeiboChannel
|
|
from .xiaoyuzhou import XiaoyuzhouChannel
|
|
|
|
|
|
# Channel registry
|
|
ALL_CHANNELS: List[Channel] = [
|
|
GitHubChannel(),
|
|
TwitterChannel(),
|
|
YouTubeChannel(),
|
|
RedditChannel(),
|
|
BilibiliChannel(),
|
|
XiaoHongShuChannel(),
|
|
DouyinChannel(),
|
|
LinkedInChannel(),
|
|
BossZhipinChannel(),
|
|
WeChatChannel(),
|
|
WeiboChannel(),
|
|
XiaoyuzhouChannel(),
|
|
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",
|
|
]
|