科学工具
科学工具让世界更美好
让世界更美好

命令行下载工具You-Get,支持国内外各大视频、音频和图片网站

You-Get是一款轻量级的命令行工具,能从网络上下载视频、音频、图片等媒体内容,尤其适合没有其他便捷下载方式的场景。

使用示例

以从YouTube下载视频为例,使用方法如下:

$ 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 Me at the zoo.webm ...
 100% (  0.5/  0.5MB) ├██████████████████████████████████┤[1/1]    6 MB/s

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

功能介绍

• 从YouTube、优酷、Niconico等热门网站及其他许多平台下载视频、音频(查看支持的完整网站列表)。

• 在媒体播放器中流式播放在线视频,无需网页浏览器,也不会有广告。

• 通过抓取网页下载感兴趣的图片。

• 下载任意非HTML内容,也就是二进制文件。

如果你感兴趣,可以现在安装并通过示例开始使用。如果你是Python程序员,还能查看源代码并进行分支开发。

安装方法

前置条件

推荐满足以下依赖: • Python 3.7.4及以上版本 • FFmpeg 1.0及以上版本 • (可选)RTMPDump

具体安装选项

1、通过pip安装 You-Get的官方版本在PyPI上发布,可以通过pip包管理器从PyPI镜像轻松安装(注意必须使用Python 3版本的pip):

$ pip install you-get

2、通过Antigen安装(适用于Zsh用户).zshrc中添加以下行:

antigen bundle soimort/you-get

3、从GitHub下载 可以下载You-Get的稳定版(与PyPI上的最新版本相同)或开发版(有更多修复和不稳定功能)。解压后,将包含you-get脚本的目录添加到PATH中。

也能运行以下命令将you-get安装到永久路径(不要省略表示当前目录的点):

$ cd path/to/you-get
$ [sudo] python -m pip install .

或者

$ cd path/to/you-get
$ python -m pip install 、--user

还可以使用pipenv在Python虚拟环境中安装:

$ pipenv install -e .
$ pipenv run you-get --version
you-get: version 0.4.1555, a tiny downloader that scrapes the web.

4、Git克隆(推荐给开发者)

$ git clone git://github.com/soimort/you-get.git

然后将克隆的目录添加到PATH中,或运行python -m pip install path/to/you-get将其安装到永久路径。

5、Homebrew(仅Mac)

$ brew install you-get

6、pkg(仅FreeBSD)

# pkg install you-get

7、Flox(Mac、Linux和Windows WSL)

$ flox install you-get

Shell补全

Bash、Fish和Zsh的补全定义可在contrib/completion中找到。可以参考相应shell的手册了解使用方法。

升级方式

根据安装方式的不同,可以通过以下方式升级:

$ pip install --upgrade you-get

或者通过以下命令下载最新版本:

$ you-get https://github.com/soimort/you-get/archive/master.zip

如果想获取最新的develop分支且不影响PIP,可以尝试:

$ pip install --upgrade --force-reinstall git+https://github.com/soimort/you-get@develop

you-get 使用指南

下载视频

找到感兴趣的视频后,可以使用--info/-i选项查看所有可用的画质和格式:

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

执行后会列出多种可选的流信息,包括itag、容器格式、画质、大小等。默认情况下,会下载列表顶部的格式。如果满意,可以直接下载:

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

如果YouTube视频有字幕,会一同下载为SubRip字幕格式。如果偏好其他格式(如mp4),可以按照显示的选项进行操作:

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

注意: • 目前大多数支持的网站尚未全面实现格式选择功能,这种情况下会默认下载最高画质的格式。

• 下载和合并某些网站(如优酷)的分段视频,以及YouTube上1080p或更高分辨率的视频时,需要依赖ffmpeg。

• 如果不想让you-get在下载后合并视频片段,可以使用--no-merge/-n选项。

下载其他内容

如果已有想要资源的确切URL,可以直接下载:

$ you-get https://stallman.org/rms.jpg

如果没有确切URL,you-get会抓取网页并尝试找出可能感兴趣的内容:

$ you-get https://kopasas.tumblr.com/post/69361932517

这个功能还在试验阶段,在从Tumblr和Blogger等热门网站抓取大型图片时效果较好,但无法适用于互联网上所有网站。

搜索并下载Google视频内容

可以向you-get传入任意内容。如果不是有效的URL,you-get会进行Google搜索并下载最相关的视频(可能不是你确切想要的,但可能性很大):

$ you-get "Richard Stallman eats"

暂停和继续下载

可以使用Ctrl + C中断下载。输出目录中会保留一个临时的.download文件。下次使用相同参数运行you-get时,会从上次的进度继续下载。如果文件已完全下载(临时的.download扩展名消失),you-get会跳过下载。

使用--force/-f选项可以强制重新下载(注意:这会覆盖同名的现有文件或临时文件)。

设置下载文件的路径和名称

使用--output-dir/-o选项设置路径,使用--output-filename/-O选项设置下载文件的名称:

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

这两个选项在以下情况很有用:默认视频标题包含特殊字符,可能与当前的shell、操作系统或文件系统不兼容;编写脚本批量下载文件并将其放入指定文件夹、命名为指定名称。

代理设置

可以通过--http-proxy/-x选项为you-get指定HTTP代理:

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

系统代理设置(即环境变量http_proxy)会默认生效。使用--no-proxy选项可以禁用所有代理。

如果需要频繁使用代理(例如网络屏蔽了某些网站),可以将you-get与proxychains一起使用,并在Bash中设置alias you-get="proxychains -q you-get"

对于某些网站(如优酷),如果需要访问仅在中国大陆可用的视频,可以使用--extractor-proxy/-y选项指定特定代理来提取视频信息。

观看视频

使用--player/-p选项可以将视频传入选择的媒体播放器(如mpv或vlc)播放,而不是下载:

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

如果想在浏览器中观看但没有广告或评论区,可以这样操作:

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

也可以使用-p选项启动其他下载管理器,例如you-get -p uget-gtk 'https://www.youtube.com/watch?v=jNQXAC9IVRw',但可能无法很好地配合使用。

加载Cookie

并非所有视频都对所有人公开。如果需要登录账户才能访问某些内容(如私人视频),必须通过--cookies/-c选项向you-get提供浏览器Cookie。

目前支持两种浏览器Cookie格式:Mozilla的cookies.sqlite和Netscape的cookies.txt

复用提取的数据

使用--url/-u可以获取从页面提取的可下载资源URL列表,使用--json可以获取JSON格式的提取数据摘要。

如果遇到问题导致you-get无法正常下载内容,可以先查看 github.com/soimort/you-get/wiki/Known-Bugs ,确认是否为已知问题。如果不是,按照报告问题的指南进行操作。