you-get库是一个强大的视频网站下载工具,可以通过音视频网页的url链接直接下载包括视频,图片等媒体内容,从而解决一些网站视频无法下载的问题。you-get支持很多网站下载,如哔哩哔哩,网易,油管等
you-get库的Github主页为https://github.com/soimort/you-get,中文文档地址为:https://github.com/soimort/you-get/wiki/%E4%B8%AD%E6%96%87%E8%AF%B4%E6%98%8E,在这里你可以找到对应的源码和官方文档,上面有其支持的视频网站列表.
需要注意的是,you-get也可以用于其官方没有列出的网站的视频下载,但是无法保证速度和下载稳定性,建议对于其他的网站,使用aria2工具进行下载

安装

pip3 install you-get
#使用清华源下载
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple you-get

同时需要安装ffmpeg,用来下载流式视频以及合并分块视频(例如,类似Youku), 以及YouTube的1080p或更高分辨率。ffmpeg可以在对应官方主页https://www.ffmpeg.org/下载

使用

-i参数:解析给定地址下的视频信息

如果你在某个网址上找到了想要下载的视频,您可以使用 —info/-i 以查看所有可以下载画质与格式.在cmd中输入:

you-get -i https://www.youtube.com/watch?v=jNQXAC9IVRw

即可返回对应的视频可下载的格式,画质,大小等信息。

site:                YouTube
title:               Me at the zoo
streams:             # Available quality and codecs
    [ DEFAULT ] _________________________________
    - itag:          43
      container:     webm
      quality:       medium
      size:          0.5 MiB (564215 bytes)
    # download-with: you-get --itag=43 [URL]

    - itag:          18
      container:     mp4
      quality:       medium
    # download-with: you-get --itag=18 [URL]

    - itag:          5
      container:     flv
      quality:       small
    # download-with: you-get --itag=5 [URL]

    - itag:          36
      container:     3gp
      quality:       small
    # download-with: you-get --itag=36 [URL]

    - itag:          17
      container:     3gp
      quality:       small
    # download-with: you-get --itag=17 [URL]

需要注意一点,上述例子you_get的基本命令是在cmd中输入的命令行,如果我们使用IDE时需要使用os.system()方法来执行cmd命令

import os
os.system(you-get -i https://www.youtube.com/watch?v=jNQXAC9IVRw)

在下面的文章中我们给出的都是在在cmd中输入的命令行,如果需要在IDE中使用请对应修改代码。

下载视频

直接下载

在上述返回的视频信息中,标有[ DEFAULT ] ________为默认的下载文件,即视频类型为webm,画质为中等的那一个。如果需要下载这个视频可以直接使用you-get+网址即可:

you-get https://www.youtube.com/watch?v=jNQXAC9IVRw
#返回下载信息如下:
site:                YouTube
title:               Me at the zoo
stream:
    - itag:          43
      container:     webm
      quality:       medium
      size:          0.5 MiB (564215 bytes)
    # download-with: you-get --itag=43 [URL]

Downloading zoo.webm ...
100.0% (  0.5/0.5  MB) ├████████████████████████████████████████┤[1/1]    7 MB/s

Saving Me at the zoo.en.srt ...Done.

选择下载

如果需要下载其他格式或画质的视频,我们就可以根据视频信息列表中的itag进行选择,使用you-get --itag= +[URL]进行下载。例如我需要下载MP4格式的视频,上面利用-i参数返回的信息列表中对应的itag是18,对应下载语句为:

you-get --itag=18 'https://www.youtube.com/watch?v=jNQXAC9IVRw'

-o参数:指定下载文件名或路径

使用—output-dir/-o 设定路径, —output-filename/-O 设定输出文件名:

you-get -o ~/Videos -O zoo.webm 'https://www.youtube.com/watch?v=jNQXAC9IVRw'

下载其他内容

如你有URL,可以直接使用:

you-get https://stallman.org/rms.jpg
------------------------------------------
Site:       stallman.org
Title:      rms
Type:       JPEG Image (image/jpeg)
Size:       0.06 MiB (66482 Bytes)

Downloading rms.jpg ...
100.0% (  0.1/0.1  MB) ├████████████████████████████████████████┤[1/1]  127 kB/s

或者, you-get将自动检查网页,下载一切有可能感兴趣的内容:

you-get http://kopasas.tumblr.com/post/69361932517
---------------------------------------
Site:       Tumblr.com
Title:      kopasas
Type:       Unknown type (None)
Size:       0.51 MiB (536583 Bytes)

Site:       Tumblr.com
Title:      tumblr_mxhg13jx4n1sftq6do1_1280
Type:       Portable Network Graphics (image/png)
Size:       0.51 MiB (536583 Bytes)

Downloading tumblr_mxhg13jx4n1sftq6do1_1280.png ...
100.0% (  0.5/0.5  MB) ├████████████████████████████████████████┤[1/1]   22 MB/s

批量下载

有些网站中一个页面往往会有多个视频(例如哔哩哔哩的分P),这个时候只需要使用—playlist参数即可全部下载,语法为:you-get --playlist 视频网址

-u 参数:解析视频真实的地址(url)

使用 —url/-u 获得页面可下载内容的URL,复制此URL我们可以直接到迅雷,IDM中下载

you-get -u https://www.youtube.com/watch?v=jNQXAC9IVRw

-p参数:在线播放视频

如果我们想要在本地的视频软件中在线播放网页中的视频则只需在电脑上的本地视频播放器根目录下打开Cmd窗口,然后输入命令,指定视频播放器播放网页视频即可

#使用Potplayer播放器,对应打开程序为Potplayer.exe
$ you-get -p Potplayer.exe 'https://www.youtube.com/watch?v=jNQXAC9IVRw'

或者你想在浏览器中观看而不希望看广告或评论区:

you-get -p chromium 'https://www.youtube.com/watch?v=jNQXAC9IVRw'

-x参数:代理设置

使用 —http-proxy/-x为you-get设置HTTP代理:

you-get -x 127.0.0.1:8087 'https://www.youtube.com/watch?v=jNQXAC9IVRw'

you-get代码用法

和众多其他命令行工具一样,you-get同样支持在代码中直接使用

from you_get.extractors import *   
download_urls([url], title, 'mp4', 0, './videos')

CMD乱码问题的解决方法

CMD窗口下输入:chcp 65001修改字符集为UTF-8,默认的中文编码是GBK
CMD窗口上方标题栏,属性—字体中,修改为TrueType ‘Lucida Console’