我如何使用 Python 自动化 Youtube 频道
当我开始编码时,我将新知识付诸实践的第一件事就是自动化我每天在工作中完成的流程。
我从事视频编辑工作,每天至少一次,我必须将带有录音的媒体下载到备份服务器,然后将它们拉到我的机器上开始编辑。因此,我决定创建一个脚本来执行此操作。
为什么要自动化?
通过自动化日常流程,就好像我在“赢得”时间。如果需要 5 分钟完成的日常任务是自动化的,那么在 5 个工作日内,您将有 25 分钟的时间去做其他事情。一个月1小时40分钟;一年,20 小时......乘以更多的任务或用户,你就有了相当多的数字。
灵感是怎么来的?
在学习 JavaScript 时,我观看了Fillipe Deschamps的一系列视频,他在那里教授如何创建一个以编程方式生成内容的 YouTube 频道。
简而言之,他访问 Wikipedia 文章以获取将在视频中使用的信息;使用 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,通过这个链接,我可以访问一个带有回放的页面并过滤我的搜索,以便只获得与优秀球员的比赛。
这里的想法是获取第一个游戏并从该表中提取信息。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s- -GYB929K3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/joaomaranhao/video-maker/main/docs/images/match.png)
在完成这项任务的众多 Python 选项中,我选择了 Selenium,因为它具有与站点交互的功能。该库可让您单击以下载游戏。
我创建了一个包含我需要的所有信息的 Python 字典,并将其保存在一个 JSON 文件中,该文件位于项目根目录下一个名为“assets”的文件夹中。
缩略图
为了创建缩略图,我使用 HTML 和 CSS 开发了一个模板。使用 JSON 信息,动态填充数据,并将 HTML 文件保存在“assets”文件夹中:
./assets
match_data.json
thumbnail.html
进入全屏模式 退出全屏模式
之后,我再次使用 Selenium 访问该 HTML 并截取页面截图。图像以 png 格式保存在我本地目录的文件夹中。
结果是这样的:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s- -3XlCf8ik--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/joaomaranhao/video-maker/main/docs/images/thumb.png)
录音
为了简化视频的制作,我决定用 OBS Studio 录制游戏。因此,我可以添加在开始时叠加的屏幕元素,而无需编辑或后期制作视频。
使用 Python 子进程模块,我运行 _.bat 文件来打开比赛的重播。
PyAutoGUI 用于打开 OBS Studio 并记录比赛。
游戏结束后,录制停止,一个 .mp4 视频文件保存到我的本地磁盘,可以使用了。
上传到Youtube
我在Google Cloud Platform上创建了一个项目,以便能够使用Youtube API。
使用 JSON 信息,我使用标题、描述、关键字和视频文件发出请求。
视频上传完成后,我再次请求将缩略图添加到视频中。
结论
这个项目让我能够使用不同的技术和方法以编程方式创建内容。借助所有自动化流程,只需运行一行代码,即可使用带有缩略图和自定义信息的更新后的新视频填充此频道。
您可以在此处查看频道。
您可以在我的Github上查看代码。
在推特上关注我!
随时提出问题,提出建议并为项目做出贡献。
更多推荐

所有评论(0)