麦都-平台开发组

如何用优雅的姿势下载不存在的网站(youtube)视频?

写作时间:2018-08-01

需求:
作为(伪)资深视频爱好者,在YouTube上有时候在看到一个好看的视频(小姐姐),内心OS:好想把视频(小姐姐)加入到那些年我们下载过的视频(小姐姐)系列中,怎么办?在线等挺急的!

实现:

方案一:

百度之后,呵呵哒,无非是下插件或者借助第三方网站去下,优点是小白也能做,缺点是慢慢慢!在时间就是金钱,时间就是生命的当下这简直是谋财害命!不能忍,弃之!

方案二:

毛主席说过自己动手丰衣足食,荀子老人家说过,君子性非异也,善假于物也
好吧,我们自己动手。
又有众多大佬说过,人生苦短,我用pyhon

python最大的好处是拥有大量现成的轮子可以用,减少了不必要的开发。
而作为一名半吊子而又有原则的技术渣,秉着能别人动手尽量不自己来的原则,开始了折腾。

首先,我们来到全球著名的同性交友网站gayhub,搜索关键字youtube,看到如图:



哇哇哇,有30多K的star,相信群众的眼睛都是雪亮的,就是它了。

youtube-dl链接直达

说干就干,点击进入之后,发现作者提供了完整详细的说明文档,并且给出了不同的开发环境下的给的不同方法,而win环境在安装了pip后只需要执行`pip install --upgrade youtube-dl这条命令即可。

在安装之后,我们就可以小试牛刀了,在命令行模式下执行如图:

2.png

就可以看到视频在下载了。

完工。

嗯?并没有

需求变更:我想只需要输入视频链接就可以下载该咋办?

其实这个很简单,加入用户交互就行了嘛

先贴效果图:

3

再上主要代码:

#! /usr/bin/env python3
# -*- coding:utf-8 -*-

#use youtube-dl download video

from __future__ import unicode_literals
import youtube_dl

video_url  = input('please input a youtube video link:')
ydl_opts = {'proxy':'socks5://127.0.0.1:1080','format':'bestvideo[ext=mp4]'}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download([video_url])

print('end')

好了,现在才算正式完工。

说明:

  • 代码中的字典中的ydl_opts参数format`意思是下载画质最清晰的的并且将格式转成mp4,具体别的参数选项可以看源项目的说明。
  • 开发环境用的Python3,python2没有测试。
  • 如果本来能下,碰到突然不能用的情况可以先执行pip install --upgrade youtube-dl将该库更新。
  • 该库不仅仅局限于下载youtube,还能下载youku等其他视频网站的视频。
  • MAC中如果python和python3共存的情况下,请把pip替换成pip3.