#缘起 最近在跟着一些资料学习数据分析,时常会连接到youtube,要看些演讲之类的,想下载下来看。有朋友也在学习这块知识,所以最理想是把视频放到国内云上,这样可以分享给小伙伴

#思路 恰好有服务器在国外,所以想做个自动化的工作,大体思路是

写个网页收集下载链接,然后后台触发celery去执行任务,任务里使用youtube-dl去下载视频,下载完后使用bypy同步到百度云盘,然后发一封邮件通知视频下载者。

关于同步到云盘和邮件通知这部分我之前在for_dinner里写过

所以这次任务不算太难,写个建议的表单页面,熟悉使用youtube-dl就行了。

###dirty and quick 我们也可以简化以上流程,一种建议的不那么自动化的方式是:

  • 小伙伴把想下载的视频微信告诉你
  • 你去国外vps上使用youtube-dl把视频下载下来
  • 之后使用FTP把视频拖回本地

#youtube-dl ##what youtube-dl是一个简单的命令行下载工具,支持全球上百个视频网站的下载,包括国内主流视频网站资源,无须注册,无须付费,无须登录,智能嗅探出真实下载地址。据官网介绍,youtube-dl甚至支持全球最大的成人视频网站免费下载。

具体列表可通过youtube-dl --extractor-descriptions查看

我使用wc统计了下(youtube-dl --extractor-descriptions|wc -l),一共可以下载国内外714个视频源的视频/音频。

此外前头说的官网介绍属实!

可供下载的国内一些著名音视频源包括:优酷/百度视频/音悦Tai/QQ音乐/网易云音乐/酷我音乐

##安装 sudo pip install youtube-dl

##使用 ###帮助 youtube-dl –help

###常用命令 * youtube-dl –list-extractors #查看支持网站列表 * youtube-dl -U #程序升级 * youtube-dl –get-format URL #获取视频格式 * youtube-dl -F URL #获取所有格式(目前仅支持YouTube) * youtube-dl -f format URL #下载指定格式的视频,这里以下载1080p原画质量的视频格式为例: youtube-dl -f 137 https://www.youtube.com/watch?v=Izj_F8r2yt0

###demo 我们以下载Role of Python in Data Science and Machine Learning(地址:https://www.youtube.com/watch?v=CoxjADZHUQA)为例

因为YouTube的video 和 audio 部分是分开的,所以这里要用到 ffmpeg 这个神器来合并视频和音频:sudo apt-get install ffmpeg

youtube-dl -F " youtube-dl -F ",输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
:::text
[youtube] CoxjADZHUQA: Downloading webpage
[youtube] CoxjADZHUQA: Downloading video info webpage
[youtube] CoxjADZHUQA: Extracting video information
[youtube] CoxjADZHUQA: Downloading DASH manifest
[youtube] CoxjADZHUQA: Downloading DASH manifest
[info] Available formats for CoxjADZHUQA:
format code  extension  resolution note
140          m4a        audio only DASH audio   99k , m4a_dash container, aac  @128k (44100Hz), 29.96MiB
141          m4a        audio only DASH audio  195k , m4a_dash container, aac  @256k (44100Hz), 59.79MiB
160          mp4        256x144    DASH video  119k , avc1.4d400c, 13fps, video only, 34.22MiB
133          mp4        426x240    DASH video  258k , avc1.4d4015, 25fps, video only, 76.12MiB
134          mp4        640x360    DASH video  605k , avc1.4d401e, 25fps, video only, 77.20MiB
135          mp4        854x480    DASH video 1104k , avc1.4d401e, 25fps, video only, 160.60MiB
136          mp4        1280x720   DASH video 2205k , avc1.4d401f, 25fps, video only, 322.11MiB
137          mp4        1920x1080  DASH video 4127k , avc1.640028, 25fps, video only, 632.46MiB
17           3gp        176x144    small ,  mp4a.40.2, mp4v.20.3
36           3gp        320x240    small ,  mp4a.40.2, mp4v.20.3
5            flv        400x240    small
43           webm       640x360    medium ,  vorbis, vp8.0
18           mp4        640x360    medium ,  mp4a.40.2, avc1.42001E
22           mp4        1280x720   hd720 ,  mp4a.40.2, avc1.64001F (best)

选定音视频质量后(比如我们选择160对应的视频,141对于的音频),开始下载: youtube-dl -f 160+141 "https://www.youtube.com/watch?v=CoxjADZHUQA"

输出为:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
:::text
youtube] CoxjADZHUQA: Downloading webpage
[youtube] CoxjADZHUQA: Downloading video info webpage
[youtube] CoxjADZHUQA: Extracting video information
[youtube] CoxjADZHUQA: Downloading DASH manifest
[youtube] CoxjADZHUQA: Downloading DASH manifest
[download] Destination: PyCon Ukraine 2014 - Jeremy Achin - Role of Python in Data Science and Machine Learning-CoxjADZHUQA.f160.mp4
[download] 100% of 34.22MiB in 00:09
[download] Destination: PyCon Ukraine 2014 - Jeremy Achin - Role of Python in Data Science and Machine Learning-CoxjADZHUQA.f141.m4a
[download] 100% of 59.79MiB in 00:12
[ffmpeg] Merging formats into "PyCon Ukraine 2014 - Jeremy Achin - Role of Python in Data Science and Machine Learning-CoxjADZHUQA.mp4"

下载完毕!

#参考 * rg3/youtube-dl