我如何使用 Python 实现 YouTube 频道自动化
当我开始编码时,我将新知识付诸实践的第一件事就是使我每天工作中都要完成的一个过程自动化。
我从事视频编辑工作,每天至少要下载一次包含录音的媒体到备份服务器,然后再把它们拖到我的电脑上开始编辑。所以,我决定编写一个脚本来实现这一点。
为什么要实现自动化?
通过自动化日常流程,我仿佛“赢得”了时间。如果一项每天只需 5 分钟就能完成的任务实现自动化,那么 5 个工作日后,你就能多出 25 分钟来做其他事情。一个月下来,你就能多出 1 小时 40 分钟;一年下来,你就能多出 20 小时……再乘以更多的任务或用户,你就能得到相当可观的数字。
灵感是如何产生的?
在学习 JavaScript 时,我观看了Fillipe Deschamps的一系列视频,他在视频中教我如何创建以编程方式生成内容的 YouTube 频道。
简而言之,他访问维基百科文章来获取视频中将要使用的信息;使用 IBM 的 Watson 人工智能将文本“分解”成句子;使用 Google API 获取图像来说明视频;使用 ImageMagick 处理照片并创建缩略图;使用 Adobe After Effects 编辑视频,最后使用 Youtube API 进行上传。
我按照这个系列做了这个项目。最后,我添加了一些额外的功能,比如用同样来自 IBM Watson 的 Text-to-Speech API 为每个句子生成音频,并将它们添加到视频中。
项目是什么
这个想法是创建一个 YouTube 频道,全自动播放非常受欢迎的游戏“英雄联盟”的比赛回放。
有些网站提供职业选手比赛的下载。录像是运行游戏的可执行文件。
为了使整个创建过程自动化,需要执行以下几个步骤:
- 进入网站,选择比赛,获取比赛信息并下载重播
- 运行重播并录制屏幕
- 编辑视频
- 创建缩略图
- 将视频和缩略图上传到 Youtube,并填写标题、描述和关键字等信息
为什么选择 Python?
由于我在其他项目中已经使用过 Javascript,所以它对我来说更熟悉,所以它自然是最佳选择。但我遇到了一个问题:我需要运行游戏,并在游戏开始时进行一些配置。为此,我需要以编程方式控制鼠标和键盘。
我找了一些 JavaScript 库来帮我实现这个功能,但没找到。这时我突然想起了一个 Python 库,叫做 PyAutoGUI。于是,我决定用 Python 做所有事情!这不仅让我拥有了所需的一切,也让我有机会精进自己对另一种语言的掌握。
如何实现
网页抓取
网络抓取是一种访问任何网站并获取信息的方法。
我以前搜索比赛的是League of Graphs,通过这个链接,我可以访问一个带有重播的页面并过滤我的搜索结果,以便只获得有优秀选手的比赛。
这里的想法是采用第一场比赛并从该表中提取信息。
在众多 Python 选项中,我选择了 Selenium,因为它具有与网站交互的功能。该库允许您单击下载游戏。
我创建了一个包含我需要的所有信息的 Python 字典,并将其保存在 JSON 文件中,该文件位于项目根目录下名为“assets”的文件夹中。
缩略图
为了创建缩略图,我开发了一个包含 HTML 和 CSS 的模板。使用 JSON 信息,数据会被动态填充,并在“assets”文件夹中保存一个 HTML 文件:
./assets
match_data.json
thumbnail.html
之后,我再次使用 Selenium 访问该 HTML 并截取页面截图。图片以 png 格式保存在本地目录的一个文件夹中。
结果是这样的:
记录
为了简化视频制作,我决定使用 OBS Studio 录制游戏。这样我就可以添加屏幕上的元素,这些元素会在游戏开始时叠加,而无需对视频进行编辑或后期制作。
使用 Python 的子进程模块,我运行打开比赛重播的.bat文件。
PyAutoGUI 用于打开 OBS Studio 并记录比赛。
当比赛结束时,录制停止,并将.mp4视频文件保存到我的本地磁盘,以备使用。
上传至 Youtube
我在Google Cloud Platform上创建了一个项目,以便能够使用Youtube API。
利用 JSON 信息,我发出包含标题、描述、关键字和视频文件的请求。
当视频上传完成后,我再次发出请求以将缩略图添加到视频中。
结论
这个项目让我能够使用不同的技术和方法以编程方式创建内容。借助所有自动化流程,只需运行一行代码,即可将带有缩略图和自定义信息的全新更新视频填充到此频道。
您可以在此处查看频道。
您可以在我的Github上查看代码。
在 Twitter上关注我!
欢迎随时提问、提出建议并为项目做出贡献。
文章来源:https://dev.to/joaomaranhao/how-i-used-python-to-automate-a-youtube-channel-ph0