互联网电台流媒体库
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_15292d5a/yjkj-internet-radio-music-db。
技能介绍
要解决什么问题
如果你需要一批可直连播放的网络电台流 URL,而不是在网页里逐个点选,手工维护 http://server:port/stream 列表会很快失控:来源分散、.pls 解析不一致、慢速或死链混在库里,播放器还要自己猜「多慢算不可用」。
本技能面向 internet-radio.com 这类目录站,把「按流派分页采集 → 解析播放列表 → 测速过滤 → 持久化」做成可重复跑的流水线,输出统一的 state.json 流数据库,并配合定时任务做增量建库与可用性复检。
核心能力怎么跑
- 并行采集:默认约 29 个流派各开一线程,抓取
/stations/{genre}/分页(MAX_PAGES默认 10,可在build_db.py调整),空页停止;去重 URL 后典型一轮约 150+ 条可用候选(全量扫描规模更大,取决于页深)。 - URL 解析:从电台页提取
.pls链接,再解析出直连流地址。 - 自适应测速:
check_stream.py为建库与复检共用逻辑;按码率计算阈值(例如 320k 需约 30 KB/s,128k 约 12 KB/s,未知码率下限 5 KB/s),并行短下载探测(建库侧约 60 worker,复检约 120 worker)。 - 运维脚本:
cli.py列表/增删/导出,show_stats.py看流派、语言、速度与效率,check_availability.py全库复检;失败计数failed_checks >= 3的流会自动移除。 - WebUI(可选):
internet-radio-music-webui插件可嵌入面板做播放与库管理;需同时安装本技能与internet-radio-music-player,插件会自动发现本技能里的脚本。
适用边界与注意点
- 数据源绑定 https://www.internet-radio.com/,目录结构或页面变更会影响采集。
- 语言字段主要靠电台名称关键词推断,不是音频内容识别。
state.json为本地状态,不包含在技能发布包内;Cron 示例为每 4 小时建库、错峰 30 分钟做可用性检查,可按环境改调度。- 测速是「能否在阈值内持续拉流」的启发式,不等同于全球 CDN 意义上的 SLA 保证。
使用场景
- 在自建 WebChat 里嵌入电台面板前,先按流派批量采集并测速,只保留能稳定拉流的 URL
- 播放器技能依赖的 `state.json` 过期或大量 404 时,用定时任务每 4 小时重建库并错峰做全库复检
- 需要从 internet-radio.com 导出某一流派(如 Jazz、Ambient)的直连地址,供 CLI 或外部播放器配置使用
- 上线 24 小时背景音或 mood 电台前,先跑 `check_availability.py`,自动剔除连续三次测速失败的死链
适合人员
- 维护 OpenClaw/WebChat 电台插件、需要可嵌入播放且流列表可重建的集成工程师
- 使用 internet-radio-music-player 并要把目录站链接整理成可播放直连库的自托管爱好者
- 负责定时 Cron(建库 + 可用性检查)并要按码率阈值统一淘汰慢链的运维或脚本维护者
- 做流派统计、语言分布或 `--effective` 效率报告,评估库质量的数据分析或内容策展人员