听我爱听的2——用Podsync把视频变成播客

听我爱听的2——用Podsync把视频变成播客

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

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

用播客客户端订阅 YouTube - 少数派如何用Podsync生成Youtube频道的播客 | droid4usPodsync 曾经是最火的 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运行dockerdocker 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。

相关推荐

华为Nexus 6P(双4G)
beat365官方app安卓版下载

华为Nexus 6P(双4G)

📅 09-19 👁️ 7220
为什么你们的目光离不开那些所谓的明星?
365bet品牌中文网

为什么你们的目光离不开那些所谓的明星?

📅 07-11 👁️ 1262
网页中div标签怎么让边框显示
beat365官方app安卓版下载

网页中div标签怎么让边框显示

📅 08-23 👁️ 4022