一键自动下载短视频并分发至长视频平台脚本开源展示(自媒体营销神器)
项目语言:Python
开发历时:一个月
为什么要开源:Those whom God wishes to destroy, he first makes mad.
用到的库:
首先是项目展示环节:

https://www.youtube.com/watch?v=5kG-wHL4y6k​www.youtube.com

脚本处理示例↑

https://www.bilibili.com/video/av33882370​www.bilibili.com

第一期工程之将人工筛选的视频下载并处理成搞笑合集↑

https://www.bilibili.com/video/av36229376/​www.bilibili.com

第二期工程之将特定达人的视频下载并处理成搞笑合集↑

https://www.bilibili.com/video/av34885421/​www.bilibili.com

第二期工程之将Q群沙雕图处理成沙雕图合集↑
第三期工程之更新合集封面图的处理方式↑
第三期工程之自动识别美女的视频,下载并处理成小姐姐合集(还没开始做)↑
然后是项目地址:

全自动抓取短视频分发各大视频平台脚本​github.com

各脚本文件详解:
douyin2bilibili_Collection.py:国内抖音达人个人视频合集(抖音+国内+个人)
douyin2bilibili_streamline.py:国内抖音人工筛选视频合集(抖音+国内+筛选)
douyin2bilibili_streamline_oversea.py:国外抖音人工筛选视频合集(抖音+国际+筛选)
pure_upload.py:仅通过分发平台上传的脚本
upload.exe&upload_bg.exe:分发视频时调取的选择文件脚本
GBK.ttf:处理封面图时所用到的字体
youtube_upload.py:基于you-get的油管视频转载脚本
希望做成的所有功能一览:
其中已达成的目标(除了上述的三个以外):
快手&抖音+国内&国外+个人:
muyangren907/Kwai_download_script​github.com图标
其中仅快手国际筛选未实现。
接下来是技术细节:
1.视频的抓取:最早期的版本的下载模块,我使用了@Jack-Cherish的抖音爬虫(Jack-Cherish/python-spider),在此表示感谢。其原理为,根据短视频的分享链接,进入相应PC端网页,提取原视频链接并下载。后来发现国内的token验证并不严谨(AppSign/douyin),故改为模拟手机端app发包并收集json,批量解析视频链接后下载(个人合集),但这一招对签名算法不同的国际版抖音app无效,故只能使用下一招:通过fiddler进行手机抓包,提取json文件解析链接下载(muyangren907/Kwai_download_script)。
2.封面图的处理:最早我仅仅通过(同和君Hocassian:做视频还能开挂?如何让电脑自己学会做视频!)这篇文章中第九项的方法生成封面图,后来觉得这样的封面有些单调,就改了算法,检测到图片的尺寸若小于20/27,就使用三图模式(具体算法见下图)。至于这一张图和三张图怎么获取,这里就用到了moviepy.editer库中VideoFileClip类的duration方法,获取列表前三个视频1/2时间段的视频截图,根据时间码,用ffmpeg进行截图,然后去除黑边,再合并。
3.视频背景图的处理:首先肯定要有一张干净的底层模板,在这层模板上我划出了几个自由填充的区域:Logo、简介、标题、二维码(第一阶段)、头像、昵称。对应每个短视频,生成相应的背景图片,相关技术:PIL
第一期的背景图↑,后来由于视频平台会对包含二维码的视频限流,故第二期工程就改成了以下这种模式↓。
详细的图片处理方法请直接参考我的代码。
4.图片与视频的嵌合,以及单个视频的合并:通过ffmpeg实现,相关教程请参考:

FFmpeg命令行语法之-filter_complex (Android环境)​www.jianshu.com

5.视频的分发:如果一个一个平台的传,估计得累死,所以我选择火星云分发,基本支持国内所有大型长视频平台。因为没找到网站的api,所以用了selenium,一个基于谷歌浏览器的自动化测试框架,可以模拟大部分人工操作流程。
以上就是我脚本所有的内容了,希望能来个大神帮忙写个GUI啥的……
6.自媒体运营的技巧:最重要的,转载的不要投原创!转载的不要投原创!转载的不要投原创!重要的事情说三遍!这个脚本给你们是用来引流的,不是用来薅平台羊毛的!其次则是标封的把控,这里有个教程可以分享给大家:

标题党是如何用这些招数把你当宠物诱骗的!​www.bilibili.com

7.油管一键转载脚本:这个就没啥好说的了,抓取油管的封面,再通过you-get抓取视频,然后调取分发模块。其中肯定会有人奇怪这一行:if(int(img.headers['content-length']) > 1098),这是因为有些老视频,或者没有刻意上传高清封面图的视频,它的maxresdefault.jpg是这个样子的:
这张图的大小为1097,所以如果视频本身就没高清封面,那就不传封面了,让平台的系统自己截取去~


人生有無數種可能,人生有無限的精彩,人生沒有盡頭。一個人只要足夠的愛自己,尊重自己內心的聲音,就算是真正的活著。