Youtube自动化采集赚钱操作方法公开
2019-03-11 13:39:08 Author: mp.weixin.qq.com(查看原文) 阅读量:21 收藏

温馨提示

如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。

因为自己买的一批号,没有时间去管理,一半的号粉丝量也没够1000(因为以为粉丝量不够但是号已经有盈利功能了就无所谓了),这次被波及了。一批取消了盈利,目前也没空继续扩大,手上仅存一批账号还在跑,因此考虑到未来我这边要扩大,肯定要继续改动代码,因此,放出目前的代码,对我没啥影响。

喷子太多,早期我在知乎上简单的回复,就引了一批傻X的喷,一些是版权喷子,一些是道德喷子,还有一些就是直接否定操作性,吧啦吧啦一堆。

当然,做为怼天怼地怼空气的老农来说,不差因为今天再多了几个喷子。

爱做不做,爱干不干,没能力的人从来自会为自己不能做找借口,他们的观点就是自己做不了的事情,赚不到钱的事情,全天下人都不能做。MMP。你个糟X碧池。

视频制作思路
STEP1:视频源

直接搬运=侵权

间接搬运修改MD5等,背景音乐侵权

因此,我的思路比较简单,在自媒体百家齐放的这几年,最不愁的就是自媒体文章,一堆自媒体人每天不停的瞎编文章,公众号也是一堆人不停的写文章吸粉,那么这些就是源头。

操作上,采集文章,标题+内容

内容有够多的文字就行了。图片太少或者文章没图片怎么办?

这个好解决,直接跟进标题,去google或者百度搜索即可  得到的图片下载一些下来即可。

声音怎么处理?

腾讯AI 百度AI有这样的 文章转语音接口。

STEP2:有一个已经开启了盈利的账号

目前价格已经炒的很贵,这里就不介绍,老样子,能做的人总能自己找到资源,

不能做的人,总是为自己的能力找借口,或者自己压根喜欢伸手党,不去自己找这块资源。

STEP3:VPS批量跑

量化是操作的核心。

一个号跑赚那么点钱,一批号跑就赚的很多了。

VPS 这里量化推荐阿里云国际版,真的稳

采集自媒体文章入库

最近忙,就不配牛逼的表情包了

因为涉及到量化,因此,我考虑的是首先,文章源要够,每一个YOUTUBE频道传的视频内容要做到不一样,如何解决这个问题呢?

很简单

我用PHP简单的配合MYSQL做一个接口文件

-- --------------------------------------------------------

--

-- 表的结构 `ytb`

--

CREATE TABLE `ytb` (

`id` int(11) NOT NULL,

`url` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,

`used` int(11) NOT NULL,

`type` text CHARACTER SET utf8 NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--

-- 转存表中的数据 `ytb`

--

入库的PHP脚本

<?php

error_reporting(E_ALL);

ini_set("display_errors", 1);

$url=base64_decode($_GET["url"]);

$type=$_GET["source"];

$c = mysqli_connect("127.0.0.1", "affadsense.com", "affadsense.com","affadsense.com");

$insertdata="insert into ytb(url,used,type) values('$url',0,'$type');";

if($c->query($insertdata)==true){

echo "插入数据成功";

}else{

echo "Error insert data: " . $c->error;

}

mysqli_close($c);

提取URL的脚本

<?php

error_reporting(E_ALL);

ini_set("display_errors", 1);

$type=$_GET["source"];

$c = mysqli_connect("127.0.0.1", "affadsense.com", "affadsense.com","affadsense.com");

$sql="select * from ytb where type='$type' and used =0 order by id desc  limit 1";

$obj =$c->query($sql);

while($row = mysqli_fetch_assoc($obj)){

        $id=$row['id'];

$url=$row['url'];

echo $url;

$sql2="update ytb set used=1 where id=$id";

if($c->query($sql2)==true)

{}

    }

mysqli_close($c);

这里懂脚本的应该知道,入库的时候,我设置used=0,提取的时候used=0的URL,然后提取后就设置used=1

这样,每一个URL就不会重复被使用了。

自媒体文章转视频

从接口提取url就不说了。

URL提前文章标题,文章内容以及文章中的配图也很简单,

主要是文章怎么转视频这块

把提取的内容部分,通过百度AI文字转语音或者腾讯文字转语音,转为MP3文件。当然,调用系统的也行,不过略显生涩。

然后有了MP3文件,就知道整个视频的长度,然后根据图片的数量,把每一张图片的播放时间计算好,再进行MP3  视频的合并。

视频加工:

画中画,视频播放前的播放头视频

视频加滚动文字的代码:

总之,这里涉及到了ffmpeg这个工具,费了不少时间去研究命令,并且买了本书

然并软,书压根没咋看,还是靠google baidu  sogou soso等等等

代码过长,因此公众号完全贴不完,只能说个大概。

视频上传

上传部分,早期用的是youtube的官方api,但是发现,API上传默认是不开启盈利功能的,还是得配合浏览器插件,手动写了一下开启盈利的动作后,定期去滚动执行去获取的。

后来我直接改用selenium这个东西,

 ChromeOptions options = new ChromeOptions();

                options.AddArgument("--user-data-dir=" + fileDir + "/data"); 

                 ChromeDriver driver = new ChromeDriver(options);

                    try

                    {

                        driver.Navigate().GoToUrl("https://www.youtube.com/upload");

                        string htmlcode = driver.FindElement(By.TagName("body")).GetAttribute("innerHTML");

                       // video = fileDir + "/"+

                        try

                        {

                            //

                            driver.FindElement(By.XPath("//input[@type='file'])[2]")).SendKeys(video);

                        }

                        catch

                        {

                            try

                            {

                                driver.FindElement(By.XPath("//*[@id=\"upload-prompt-box\"]/div[2]/input")).SendKeys(video);

                            }

                            catch { }

                        }

                        text = suoxie.StringTruncat(richTextBox1.Text + text, 5007, "...");

                        Thread.Sleep(2000);

                        driver.FindElement(By.XPath("//*[@id=\"upload-item-0\"]/div[3]/div[2]/div/div/div[1]/div[3]/form/div[1]/fieldset[1]/div/label[1]/span/input")).Clear();

                        driver.FindElement(By.XPath("//*[@id=\"upload-item-0\"]/div[3]/div[2]/div/div/div[1]/div[3]/form/div[1]/fieldset[1]/div/label[1]/span/input")).SendKeys(title);

                        driver.FindElement(By.XPath("//*[@id=\"upload-item-0\"]/div[3]/div[2]/div/div/div[1]/div[3]/form/div[1]/fieldset[1]/div/label[2]/span/textarea")).SendKeys(text);  

                        Thread.Sleep(10000); 

                        htmlcode = driver.FindElement(By.TagName("body")).GetAttribute("innerHTML");

                        if (htmlcode.Contains("您的视频将出现在以下位置") || htmlcode.Contains("Your video will be live at"))

                        {

                            ress = GlobalRegex.RegexMatch(htmlcode, @"(?<=https://youtu\.be/).*?(?="")");

                            ress = "https://youtu.be/" + ress;

                            try

                            { 

                            driver.FindElement(By.XPath("//*[@id=\"upload-item-0\"]/div[3]/div[2]/div/div/div[1]/div[3]/form/div[1]/fieldset[3]/div/span[3]/div[2]/div[1]/div/div/input")).SendKeys(thumbfile);//图片所旅途

                            }

                            catch(Exception EEE)

                            {

                                var log = new LogManager();

                                log.WriteLog(EEE.StackTrace);

                            }

                        }

                        for (int i = 0; i < 1200; i++)

                        {

                            Thread.Sleep(1000);

                            htmlcode = driver.FindElement(By.TagName("body")).GetAttribute("innerHTML"); 

                            if (driver.Title.Contains("已上传 1 个视频"))

                            {

                                try

                                {

                                    driver.FindElement(By.ClassName("save-cancel-buttons")).Click();

                                    i = 1201;

                                }

                                catch(Exception ez)

                                {

                                    MessageBox.Show(ez.Message);

                                }

                                try

                                {

                                    htmlcode = driver.FindElement(By.TagName("body")).GetAttribute("innerHTML");

                                    if (htmlcode.Contains("要在视频中投放广告,您现在需要在每次上传视频时为其启用广告获利功能"))

                                    {

                                        try

                                        {

                                            driver.FindElement(By.XPath("//*[@id=\"upload-item-0\"]/div[3]/div[2]/div/div/div[1]/div[1]/ul/li[2]/div[1]/a/sub/span")).Click();

                                            Thread.Sleep(5000);

                                            driver.FindElement(By.XPath("//*[@id=\"monetize-with-ads\"]")).Click();

                                            Thread.Sleep(1000);

                                            driver.FindElement(By.CssSelector("#upload-item-0 > div.upload-item-main > div.upload-state-bar > div.metadata-actions > div > div > button")).Click();

                                            i = 1201;

                                        }

                                        catch (Exception ee) {

                                            var log = new LogManager();

                                            log.WriteLog(ee.StackTrace);

                                        }

                                    }

                                }

                                catch (Exception eee) {

                                    var log = new LogManager();

                                    log.WriteLog(eee.StackTrace);

                                }

                                break; 

                            }

                        }

                        try

                        {

                            DelectDir(Environment.CurrentDirectory + "\\images");

                            DelectDir(Environment.CurrentDirectory + "\\mv");

                            DelectDir(Environment.CurrentDirectory + "\\wav");

                        }

                        catch (Exception ee)

                        {

                          //  MessageBox.Show(ee.Message);

                            var log = new LogManager();

                            log.WriteLog(ee.StackTrace);

                        }

                        Thread.Sleep(1000);

                    }

最后 软件界面

如果看到这个视频片头,说明这个视频是我的

最后,

★★★★★
看了老农的文章,还不转发
★★★★★
看了老农的文章,还不点赞
★★★★★
看了老农的文章,还不点广告

End

说下软件的操作方法:

点下

会弹出YOUTUBE,登陆下,然后记得最下角的浏览器语言选择中文

note是默认的YOUTUBE视频介绍的文章头部

dahua.mp4  是画中画的素材  可以上国外去购买其他的素材去操作修改

back.mp3  是文章的背景音乐  可以改成你喜欢的不侵权的

start.mp4  是片头音乐

安装chrome浏览器最新版是必须的

软件第一次在VPS上登陆,要登陆,或自动设置一个缓存文件夹,后续就不要登陆了。

登陆后,选择采集源,点一下上次就行了。

至于采集问题,我是单独一台VPS每天采集。其他要铺的YOUTUBE的VPS,统统只点采集

源码,发布  在 知识星球。 为什么不发布软件?因为我改动了接口。(省的我这边的调用一下子被用光了。)

因此,你们最后改动下接口。搜索 bbs.affadsense.com 改成你们自己的即可。

由于忙,不会用 没缘分用的就不要微信问我了(我已经NNN次强调过,知识星球/论坛提问为主)

没必要每写一篇文章,微信就受到一堆叨唠,大家时间都有限,手把手教还得把饭喂嘴里的事情,我从来只愿意给妹子做。

码字不易,您的转发和赞赏是我的一大动力之一。

欢迎关注我的公众号,请爱护我,不要抄袭我。

欢迎加入我的论坛,与我们一起交流。

下面是加入小密圈/获取论坛邀请码购买渠道:

小密圈(入圈后私信圈主,看到会私信邀请码):

其他获取方式:

支付宝:

微信支付:


文章来源: http://mp.weixin.qq.com/s?__biz=MzIyNTIyNTU4NA==&amp;mid=2247484819&amp;idx=1&amp;sn=029ba954bf6de5d1ba8b9da6c3b6ee48&amp;chksm=e803bb8cdf74329adcd0db4e1ef10a16bd16242c9de4d0fa94aa952b4e67d62ac07727dd85fa#rd
如有侵权请联系:admin#unsafe.sh