惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
博客园 - Franky
J
Java Code Geeks
V
Visual Studio Blog
G
Google Developers Blog
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog
博客园 - 司徒正美
The GitHub Blog
The GitHub Blog
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
博客园 - 【当耐特】
IT之家
IT之家
I
InfoQ
U
Unit 42
C
Check Point Blog
Martin Fowler
Martin Fowler

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
听我爱听的2——用Podsync把视频变成播客 - 少数派
2025-01-07 · via 少数派

半年前写了篇文章,当时提到了我会用Podsync订阅视频网站,并fork了一个支持B站的版本供自己使用,到今天已经稳定运行了半年多,再简单介绍下使用方法,以飨读者。

Podsync

关于Podsync的介绍少数派上有相关文章已经提到过。

Podsync 曾经是最火的 YouTube2Podcast 线上服务,但其生成 Youtube 视频的纯音频 RSS 需要支付 $1/mo 的服务费。另外由于树大招风,几年前已经被 YouTube 杀掉了其所有 API keys 而关门歇业。

开发者无私开源了 Podsync 的服务端程序,在自备 VPS 和 Youtube API 的前提下,我们可以搭建属于自己的 YouTube2Podcast 服务。

总结下说,Podsync是一款自搭建的提取视频网站音频子托管成RSS服务软件。很多使用泛用性播客客户端如我上一篇文章里介绍的Anntenapod的用户无法直接收听视频网站上适合直接收听的内容,如作品本人经常收“听”秃头海豹、圆脸等这种画面只有一张大脸的自媒体内容,那块屏幕直接变得可有可无。当然,如果不嫌麻烦且比较富有,也可以通过Youtube Premium会员或者B站后台播放功能直接收听。不过,作为一个RSS原教旨主义爱折腾穷B,没有可靠的订阅方式显然是不可接受的。

有一些up主比较适合采用听的方式

这里就有了Podsync的用武之地,本质上Podsync只做两件事,一是抓取对应自媒体信息,如视频标题、简介、播放时长、更新时间等托管到自建RSS服务器,二是通过youtuble-dl下载对应视频通过ffmpeg提取音频到服务器上供订阅者收听。

搭建方法

原作者提供了Youtube,Vimeo和Soundclod三个网站的转音频功能,对于国内用户来说,B站是另一个经常会用来收听的载体,虽然有一些视频制作者会将作者同时上传到外网,但也有不少作者只有B站一个平台,且YouTube的更新往往会很不及时,因此我个人fork了一个支持B站的版本,已提交pull request给原作者,暂时还没有被merge,有兴趣的可以也使用我fork的版本搭建。

原作者版本可以运行在x86或arm平台的Windows、Linux和Mac系统上,我自己的版本理论上也可以支持全平台,但个人只在x86架构Ubuntu系统上测试过。Podsync不需要占用太多资源,且更新频率不需要太高(Youtube的token是有次数限制的,且从使用角度也不需要太实时的抓取),也没有大管道需求,因此随便找个国外的小主机就可以很方便的部署服务,我本人使用的是一只单核/1g内存/20g存储非国内优化线路主机,年费大概100人民币出头,订阅大概20+作者,完全可以满足需求。

这里建议用docker搭建,具体搭建过程可参考这篇文章,这里只对需要B站版本的不同部分做出说明。

  • 创建Youtube api
  • 安装docker环境
  • 配置Podsync config文件
[server]
port = 8080
hostname = "http://127.0.0.1" # 此处填写 IP 地址或者域名,如果有HTTPS证书的话记得改成 https://
data_dir = "/app/data" # docker内数据存放目录,对应映射到宿主机目录,不建议改动

# Tokens from `Access tokens` section
[tokens]
youtube = "XriA7WSI3qOLkXriA7WSI3qOLkXriA7WSI3qOLk" # 引号内填写 YouTube API Key.
bilibili= "123" #由于不想破坏源代码结构,必须给B站定义一个key,可填写任意字符串,不能为空

[feeds]
  [feeds.ID1]
  # ID1 为最终生成的RSS文件的名称,可以修改
  url = "www.youtube.com/channel/UCtAIPjABiQD3qjlEl1T5VpA" # 引号内填写Youtube频道/组织/用户/播放列表的链接,注意不要有 http:// 部分!!!
  page_size = 10 # 每次更新节目时的分页大小
  update_period = "12h" # 更新周期,例如: "60m", "4h", "2h45m"
  cron_schedule = "0 1,7,11,16 * * *" #crontab更新方式
  quality = "high" # 文件品质高-high,或低-low
  format = "audio" # 文件类型音频-audio,视频-video,通常播客使用音频类型即可
  # filters = { title = "111", not_title = "222", description = "333", not_description = "444" } # [可选项,使用时去除行首井号]过滤节目,只保留「标题含有111,不含222,描述包含 333,不含 444 的节目」
  clean = { keep_last = 10 } # 自动清理,只保留最近10期节目
  private_feed = true #是否私有,非私有的话会可以被iTunes等客户端搜索到,建议true
  # 可以配置多个 feeds
  [feeds.ID2]
  url = "https://space.bilibili.com/xxxxxxxx" #要订阅的B站用户主页链接
  #全部同上
  page_size = 10
  cron_schedule = "0 1,7,11,16 * * *"
  quality = "high" # "high" or "low"
  format = "audio" # "audio", "video" or "custom"
  # filters = {}
  opml = true
  clean = { keep_last = 20 }
  private_feed = true

[database]
  badger = { truncate = true, file_io = true } # 数据库配置,无需改动

[downloader]
self_update = true # 自动更新下载程序

# 程序运行日志配置,无需改动
[log]
filename = "podsync.log"
max_size = 50 # MB
max_age = 30 # days
max_backups = 7
compress = true
  • 运行docker
docker run \
    -d \
    -p 8080:8080 \
    -v $(pwd)/data:/app/data/ \
    -v $(pwd)/config.toml:/app/config.toml \
   ghcr.io/yangtfu/podsync:latest #原作者版本替换为mxpv/podsync:latest

成功后访问vps主机:8080端口,可以看到文件树,其中xml文件为单播客订阅地址,podsync.opml为全部订阅导出文件。

一些说明

B站api的调用采用的是GitHub上的repo,由于B站风控的原因,调用的都是免登录的接口,因此不需要提供cookie等信息,但对于充电视频就无法下载了,会自动过滤掉充电视频,日志里会有对应信息,同样是风控方面原因也无法像youtube一样提供合集和列表的订阅作为一个频道,如果有这方面需求的小伙伴欢迎提交你的pull request。