全自动赚钱项目假想

项目前期准备

  1. 程序语言: Python 3
  2. 服务器: Google Cloud Platform
  3. 数据库: Firestore
  4. 程序托管:Github、Google Cloud Source Repositories
  5. 自动任务调度:Cloud Scheduler
  6. 第三方库、软件: FFmpeg、Requests、PIL、Selenium
  7. IM: Telegram

系统功能模块分解

一个全自动发布 YouTube 视频的系统,大致需要包含以下几个模块,根据你自己选择的类别、原始素材的不同,可能会有一定差异。

  1. 任务分配模块
  2. 原始图片、音频、视频素材提取、制作模块
  3. YouTube 视频上传模块
  4. 服务器自动部署模块
  5. 程序运行结果通知模块
  6. 程序自动更新模块

接下来我们将对每个模块一一展开阐述。

任务分配模块

对于一个自动化制作视频并上传的系统,整个系统运作的第一步是系统需要知道自己当前需要从哪个任务开始执行。以一个最简单的任务系统来说,假如整个任务是一个线性增长的任务ID,那么这个任务分配模块也就等同于一个自增ID的数据库字段。对于一个现实的任务分配模块而言,肯定要比这复杂一些,不过最核心的还是告诉程序接下来要进行哪个任务。由于整个系统基本都架构在强大而易用的Google Cloud Platform(后面简称GCP)平台之上,所以任务分配模块我直接使用 GCP 平台上的 NoSQL 数据库: Cloud Firestore。什么是Cloud Firestore呢?借用 Firestore 官网来做个简单介绍:

Cloud Firestore 是一款 NoSQL 文档数据库,它使您可以在全球范围内轻松存储、同步和查询您的移动应用及 Web 应用的数据。

我使用 Firestore 来做很多事,在任务分配模块,只需要新建一个 专属的 Collection及每个标签对应的 Document 即可,比如下面这个演示图。里面包含 counter、 task、 taskID等三个 Document ,其中 task 文档中的 status 的值设置为 on,代表当前任务状态为可继续执行。如果某个阶段的任务执行完毕,或有严重bug需要人工修复,那么这个值就会被设置为 off。其中 taskID 仅为演示才临时添加的Document,实际上的任务分配模块是在另一个专属的 Collection中,要复杂的多,但核心是一样的。任务分配模块的具体执行流程:

  1. 程序读取 task 文档中的 status 的值,如果为:on,则任务继续执行,如果为off,程序直接退出并发送通知消息
  2. 程序随机提取一个 taskID 文档,并解析当前需要执行的任务ID,根据一定规则解析成需要下载的原始素材URL
  3. 程序在后续动作中成功上传一个 YouTube 视频后,更新 taskID 中对应的任务ID
  4. 某个时间段内任务数量达到上线,设置 task 文档中 status的值为 off

视频制作模块

不同于其他大多数人,我的目标是能实现视频的全自动制作与上传,整个过程不需要人工参与,所以这个前提让我直接摒弃了无法用程序生成的视频类型,比如:自拍讲解、真人出镜、影视剪辑等等。这里以我自己某个频道的视频制作来做案例,那么这个用程序自动生成视频的流程是这样的:

  1. 下载音频 MP3 的原始素材
  2. 制作封面图片
  3. 用音频 MP3 和封面图用程序自动合成完整视频

下载MP3素材使用 Python 的 Requests库,或者使用 Linux 下的命令行工具 wget、curl都是可以的。

制作封面图使用 Python 的 PIL 库。提前准备好背景图、字体、标题文字,用 PIL 就能自动生成任何需要的图片。

具体实现思路可以自行 Google,当初我也是花了不少时间在研究这个令我抓狂的库(为了让图上的文字能自动居中)。

下面的代码仅供参考(这是我程序中使用的原始代码)

avatar ImageBG_PATHdrawAvatar ImageDrawDrawavatar

# 背景图尺寸xSize ySize avatarsize #字体大小,根据背景图尺寸 和 字数个数而定 最大 400fontSize xSize cover_titlemyFont ImageFonttruetypeFONTS_PATH fontSize # 中文字体# print(‘font Size = {}’.format(fontSize))

# 放置文字的坐标xPos xSize fontSize cover_titleyPos ySize fontSize# print(‘xPos = {}, yPos = {}’.format(xPos, yPos))

# 生成封面图drawAvatartextxPos yPos cover_title fill fontmyFont drawAvatar avatarsaveCOVER_PATH #

保存封面图合成视频使用神器 FFmpeg这个工具把我折磨的够呛,头发掉的可不少,不过最后的成果还是令我非常满意的。比如,一条 16.8M 的音频,搭配背景图,生成的 1080P 清晰度的视频大小,也只是 16.9M 而已。

下面是我耗费无数心血测试成功,用来生成视频的FFmpeg命令,供你参考。具体FFmpeg使用方法,请自行 Google。

command f’ffmpeg -loglevel panic -r 0.01 -loop 1 -i {cover_path} -i {mp3_file_path} -c:v libx264 -t {mp3_length} {video_file_path}’subprocessruncommand shell

YouTube 上传模块

又一个让我耗费无数日日夜夜的模块。起初,我使用的是 YouTube 官方的 API 上传接口:YouTube Data API V3。这个接口的使用非常简单,也特别稳定,按照官方教程基本都能操作成功。但,由于两点特别的理由(虽然算不上致命缺陷),让我下决心转向了使用不太稳定又不省心的 Selenium模块进行模拟上传。

  1. YouTube API 每天最多只能上传6条视频,上传更多需要填写一个超长的申请表且不一定能通过审核
  2. YouTube API 两个月前开始要求经过认证才能给“第三方”使用,除非你开通 每个月 $6 的G Suit套装

6刀我暂时是不想出的,但更重要的是每天只能上传6条的配额,这点让我无法忍受。毕竟,咱这种自动生成的视频,无法跟别人那种动辄吸引百万播放的精美制作视频相比,只能以量取胜。每天6条,喝西北风去啊。

无奈,Selenium 模拟上传走起呗。

关于这个,我不想多说,有需要的,可以参考一个 Github 上的开源库,我自己的上传模块也是基于这位小哥的代码进行个性化定制而来的。Github: youtube_uploader_selenium要说最大的贡献,就是这个开源库让我意识到使用Selenium模拟上传YouTube视频是切实可行的(之前我一直以为YouTube上传页面没有使用标准input是无解的)。

信心有了,开源库也有了,相信你也可以很快搞定的,起码应该比我这个半路出家自学 Python 的家伙应该顺利很多吧。

服务器自动部署模块前面所有的模块开发完毕后,你就要面临一个很重要的环节了:把程序部署到服务器上去。

虽说可以在类似 Vultr 这样的平台采购一台 VPS 并把程序部署上去并不间断运行,但基于以下几条理由,我继续选择了 GCP 旗下的 Google Cloud Engine。

  1. 使用 Google Cloud Engine 可以和 GCP 的其他功能无缝衔接,比如 Firestore等
  2. 选择 抢占式实例,一台2vCPU、1G内存的实例,每个月只需要 $2,实际运行费用则只有 $1 左右(并没有24小时运行)
  3. 在 Google Cloud Engine内上传视频到 YouTube是免流量费的

鉴于此,我选择将程序托管在GCE并选择抢占式实例。

注意,这类抢占式实例价格只有标准实例的一半左右,但是每次运行时间最长不能超过24小时,但对于我们的任务而言,这点完全不成问题。

在 GCP 上配置一个服务器模版并实现全自动启动实例、销毁实例是一件让人体验极其愉悦的事情。以下是大体的操作流程:

  1. 开一台普通实例(抢占式也无所谓,这里仅作为基础配置使用)
  2. 在这台服务器上部署你的程序,安装所有必要的模块,调试并运行成功
  3. 使用 crontab 设置每分钟运行一次你的主程序(配置 flock锁确保不重复启动)
  4. 关闭服务器,以这台配置好的服务器为基础,新建一个机器映像
  5. 以前面新建的机器映像为基础,新建一个实例模版,在实例模板中选择抢占式实例
  6. 配置一个云函数 Google Cloud Functions,实现以实例模版为基础的自动启动或销毁实例群组
  7. 配置一个 Cloud Scheduler,设置为从早上10点到晚上22点,每小时自动启动一台抢占式实例

经过以上配置,现在的程序运行机制是这样的:

  1. Cloud Scheduler会在每天上午10点,到晚上22点之间,每小时访问一次你的云函数。
  2. 这个云函数会自动启动一台你之前配置好的抢占式实例。
  3. 一旦服务器启动完毕,便会每分钟运行一次你的主程序。但由于设置了 flock 程序锁,所以不用担心程序会重复启动。只有当前程序运行完毕后,才会在下一分钟再次启动新任务。
  4. 程序在一小时内制作并上传一定数量的视频,达到限额(我设置的是每小时8个),则自动发送销毁当前服务器的指令,同时将任务状态设置为 off,等待下一小时的唤醒。
  5. 经过一小时后,Cloud Scheduler再次访问你的任务云函数并启动实例、运行程序、销毁实例,以此循环,直到晚上十点,结束一天的任务,进入休息状态。等待第二天上午十点的到来,并开始新一天的任务。

恭喜你,你有了一套完整的全自动运行并帮你赚取美元收益的YouTube视频发布系统。

程序自动更新模块对于一个已经部署好服务器模板的系统而言,如何自动更新程序版本成了另外一个需要解决的小问题。

最早,我需要手动 SSH 连接 VPS,再上传新版程序,但这明显不可持续。后来,我通过云函数中转的方式更新程序版本。

现在,我把程序托管在 Github 私人仓库,并在Google Cloud Source Repositories进行同步。

然后,在程序自动运行的命令中,加入自动更新代码的环节,就可以实现这样的效果:每次更新完代码,直接上传到 Github 仓库,Google Cloud Source Repositories会自动同步最新代码。在主程序运行前会自动拉取最新代码,然后才开始运行主程序。

比如我配置的一份自动运行命令(关键内容已启用自动混淆功能)

#!/bin/sh$time “+%Y-%m-%d %H:%M:%S””${time}” /home/whoami/iYTBpull https://source.developers.google.com/p/ytb/r/github_whoami_iytb/usr/bin/python3 iYTB.py >> iYTB.log 21

程序运行结果通知模块由于程序以自动化方式运行于一台随时可能会自我销毁的服务器中,打通一条发送任务状态的消息通道就有了很大的必要性。

好在,这样的一个消息通道实现起来是非常容易的,比如我目前在用的这个方式: Telegram 群组通知基本只需要三个步骤即可。

  1. 申请一个 Telegram Bot
  2. 新建一个 Telegram Group,把机器人拉入群组并设置为管理员
  3. 部署一个能向群组发送消息的 Cloud Functions

部署完毕以后,不管是程序的出错消息、意外bug、成功通知等,都可以用发送 GET 请求的方式到云函数,你就可以在群组内收到最新的消息通知了,包含了程序开始时间、cookies状态、上传视频的标题、程序实际上传所化的时间、发布成功的视频ID、程序完整运行时长等。

至此,整个项目框架基本完毕,剩下的就是微调以及素材补充了。

原创文章 如若转载,请注明出处:https://www.xhllsys.com/2569.html

上一篇 2020-11-22 下午2:33:16
下一篇 2021-01-03 上午3:03:55

相关推荐

  • 企业如何参与行业标准制定?(如何申请行业标准)

    我是省级的标准化库专家,参与过多个标准的编写和评审⼯作。 1. 标准是什么 根据国家标准GB/T2000.1-2014《标准化⼯作指南 第1部分:标准化和相关活动的通⽤术语》定义,标准是“通过标准化活动,按照规定的个程序经协商⼀致制定,为各种活动或结果提供规则、指南或特性,供共同使⽤和重复使⽤的⽂件”。 听起来这么绕,那我们举两个例⼦。 例1:⼤家出⻔,不管…

    2022-10-18
  • 同城直播间的套路,交友网站的秘密

    大家好,我是阿蓝,关于同城直播间有很多人肯定知道,那么我们今天就来介绍一下隐藏在同城直播间背后的秘密。 我们都知道在暴利产品有一种类型,叫做【男人号色】,而这款软件就是利用了这一点牟利。今天要给大家分享的就是这个臭名昭著的软件【骗子交友】,以及和它类似的打着交友约炮等口号骗人的交友类产品,以下简称这类产品为“骗子交友”赚钱项目。 本文将深刻的揭露此类软件的运…

    2020-08-03
  • 通用型项目起盘模型丨循环流量实验室

    通用项目起盘流程 (循环流量实验室出品) 产品需求分析 需求确定 搜索指数 电商销量 市场分析 竞争程度 渠道分析 竞品分析 利润分析 流量渠道 改进方向 确定产品 引流产品 付费产品 高价产品 项目阶段计划 项目愿景 核心价值观 服务人群 战略目标 阶段目标 最小化和持续盈利sop 规模团队化 平台化 资本化 后端营销设计 展示专业性 发展历程 服务种类 …

    2021-01-11
  • 麦淘是什么,麦淘过户安全吗?

    今天说说麦淘网,麦淘是什么,简单的说就是一个交易平台,主要是天猫商城和淘宝网点的过户转让用的,同时也会对每个店主提供网店评估和网店推广等服务。 很多做淘宝店或者天猫店的朋友会因为各种原因做不下去了,就会选择将店铺出售或者闲置不管了,也有很多人想做一个淘宝店,但是现在淘宝店从0开始做已经太难了,门槛很高,需要很多时间和精力去,还不一定可以做起来,所以有的人就选…

    2020-06-17
  • 抖音卡直播广场的技术_抖音免费流量方法

    一切生意的本质就是流量 循环流量实验室引流技术栏目 1.我的分享有可能是错的,也有可能是对的,同时也是完全免费的。 2.如果你有什么想和阿蓝交流,欢迎来循环流量实验室找到我。 3.自己多思考、多测试是成功的必要条件之一。 引流技术栏目分享各种引流技术 很多朋友在玩抖音的时候都会想要玩直播,因为直播的流量非常多,而且是免费的 如果有很好的互动和维护的话可以直接…

    2020-11-14
添加微信
添加微信
会员权益
返回顶部