![从 RSS feed 下载完整播客的命令行工具](https://linux22.com/image/146519/%E4%BB%8E%20RSS%20feed%20%E4%B8%8B%E8%BD%BD%E5%AE%8C%E6%95%B4%E6%92%AD%E5%AE%A2%E7%9A%84%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7.png)
给定一个播客rss feed
,如何从命令行下载完整的播客?
我并不是在寻找成熟的命令行播客客户端。我只需要一个一次性命令来下载 mp3 中给定播客的完整历史记录(所有剧集)。
作为示例,以下是包含近 200 集的 RSS 提要:
http://www.internethistorypodcast.com/feed/
如何将它们全部下载为 mp3 文件?
答案1
youtube-dl
可以做到。
只需将提要的 URL 作为唯一的参数传递即可。
答案2
从这个帖子:
URL="https://feeds.feedburner.com/TEDenEspanol"
curl -s $URL | xmlstarlet sel -N atom="http://www.w3.org/2005/Atom" -t -m './/enclosure' -v '@url' -n | wget -i -
curl
从 URL 获取 XMLxmlstarlet
从 XML 中提取附件 URLwget
从 STDIN 下载 URL 列表
如果您不想下载所有链接,则wget
不需要。
例如,要获取标题:
curl -s $URL | xmlstarlet sel -t -v 'rss/channel/title'
答案3
试试这个,它对我来说效果很好:
$ curl http://www.internethistorypodcast.com/feed/ | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*mp3" | sort -u | xargs wget
curl
收集原始播客grep
提取 mp3 URLsort
删除重复项(在本例中,我认为它与 相同uniq
)xargs
将 mp3 URL 一一通过管道传递给 wgetwget
将mp3文件一一下载到当前文件夹中
答案4
我不太熟悉 rss feed 或它们的格式。我也没有看到,例如newsbeuter
,您所说的 feed 中存在近 200 集(我只看到 10 篇文章)。
但如果仅仅目的是下载.mp3
提要文件中提到的文件,这可能适合您:
wget http://www.internethistorypodcast.com/feed/ -O feed
wget $(grep -ioP '<enclosure\s+url="\K.*?\.mp3(?=")' feed)
第一个命令下载 feed 文件,并将其另存为feed
.第二个从文件中的标签中提取.mp3
文件名并下载它们。enclosure
feed
注:我刚刚浏览了该网站,但没有找到完全的提要/下载列表。缺少它可能是故意的,鉴于此,我认为我不适合解释如何抓取网站本身以提取/下载所有播客。