从 Changelog 下载播客





5.00/5 (1投票)
由于21世纪生活节奏快,找到时间学习新知识和跟上技术趋势变得越来越困难。
一个很好的学习和提升方式,就是在不牺牲其他活动时间的前提下,收听一些优秀的播客。
如果你和我一样,喜欢在离线状态下用手机收听播客,你会发现很多网站没有提供直接下载按钮,迫使你手动查找文件。最近,我在 https://changelog.com 上的播客遇到了这个问题,所以我决定编写一个小型的控制台应用程序,将 mp3 文件直接下载到我的磁盘。
必备组件
这将是一个相当简单的教程,但希望仍然有用。要跟随教程,你只需要一个 Python IDE 和基本的 Python 技能。你可以在我的 Github 页面上找到项目的完整源代码。
准备解决方案
由于我们要编写一个相当小的控制台应用程序,我决定将所有内容放在一个文件中。要开始,创建一个空的 changelog_mp3.py 文件。为了使其可执行,你应该在文件顶部添加标准的 Python shebang
#!/bin/python3
分析 Changelog.com
在 Changelog 概述 页面上,你会找到几个播客类别可供选择。一旦你打开感兴趣的类别并选择一个播客,你将看到一些关于该播客的信息和一个在线播放器。要获取实际的 mp3 文件,你必须右键单击 播放 按钮并在新标签页中打开链接。查看 URL,你将看到我们想要下载的文件,例如,JS Party 播客的 js-party-25。
你可以以类似的方式获取其他播客的基础 URL,从而允许我们将它们初始化到一个数组中,用于所有播客
base_urls = ['https://cdn.changelog.com/uploads/podcast/<id>/the-changelog-<id>.mp3',
'https://cdn.changelog.com/uploads/gotime/<id>/go-time-<id>.mp3',
'https://cdn.changelog.com/uploads/rfc/<id>/request-for-commits-<id>.mp3',
'https://cdn.changelog.com/uploads/founderstalk/<id>/founders-talk-<id>.mp3',
'https://cdn.changelog.com/uploads/spotlight/<id>/spotlight-<id>.mp3',
'https://cdn.changelog.com/uploads/jsparty/<id>/js-party-<id>.mp3',
]
下载播客
让我们进入这个程序的核心:下载播客的代码。所有的魔术都会发生在下面的 download_podcasts
方法中
def download_podcast(podcast_id):
base_url = base_urls[podcast_id - 1]
print("Enter one or more episodes to download:")
episodes = (int(x) for x in input().split(','))
target = '/home/philipp/Downloads/'
for episode in episodes:
download_url = base_url.replace('<id>', str(episode))
print('Downloading episode {} to {}'.format(str(episode),target))
try:
urllib.request.urlretrieve(download_url, target + download_url.split('/')[-1])
print('Download complete!')
except:
print('Could not download file: {}'.format(download_url))
我们方法的唯一参数是 podcast_id
,它告诉程序应该下载哪一类播客。接下来,我们要求用户输入他/她想要下载的一个或多个剧集编号,并定义 mp3 文件的目标文件夹。
在下面的 for
循环中,我们简单地遍历所有选定的剧集,将 ‘id
’ 占位符替换为剧集编号,从而获得有效的 URL,并最终下载文件。由于我们使用的是 urllib
库,你需要在文件顶部添加一个 import
语句
import urllib.request
这就是我们从 https://changelog.com 下载播客并将它们存储为 mp3 文件所需的一切。为了调用我们的新代码,我在 main
方法中实现了一个简单的控制台 UI
def main():
print('Which podcast would you like to download?')
print('(1) - The Changelog')
print('(2) - Go Time')
print('(3) - Request for Commits')
print('(4) - Founders Talk')
print('(5) - Spotlight')
print('(6) - JS Party')
n = int(input())
download_podcast(n)
这允许用户选择一个播客,然后在 download_podcast
方法中选择剧集。要在我们执行文件时运行我们的新代码,只需将以下入口点添加到程序中
if __name__ == "__main__":
main()
结论
我希望你喜欢这篇文章,并了解编写小型实用工具来使我们的生活更轻松是多么容易! 欢迎扩展代码,以更方便的方式下载你喜欢的任何其他播客!