You-Get 安装使用与介绍

前言

You-Get 是一个基于 Python3 的下载工具,可以很轻松地下载到网络上的视频、图片及音乐资源,默认支持 YouTube、哔哩哔哩、优酷、爱奇艺、腾讯视频等视频网站的下载。下面将介绍在 Linux 系统下如何使用 You-Get,此教程适用于 Centos/Debian/Ubuntu 等 Linux 发行版。

依赖说明

以下是必要的依赖,需要提前单独安装,除非是在 Windows 系统下使用预安装包:

通过 PIP 安装

You-Get 的官方版本通过 PyPI 分发,可从 PyPI 镜像中通过 pip 包管理器安装,务必使用 Python3 的 pip

1
$ pip3 install you-get

软件版本升级

1
$ pip3 install --upgrade you-get

下载视频

当观赏到感兴趣的视频,可以使用 --info/-i 参数来查看视频的所有可用画质与格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$ 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]

标有 DEFAULT 的为默认画质,一般情况下可直接下载,如 YouTube 视频带有字幕,那边字幕将被一同下载,以 SubRip 格式保存:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ 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.
  • 注意:
  • 批量下载可以使用参数 --playlist
  • 目前,视频格式选择没有大规模铺开,默认选项为最高画质
  • ffmpeg 为必要依赖,用于下载流式视频以及合并分块视频 (例如 Youku),以及 YouTube 的 1080p 或更高分辨率的视频
  • 如果不希望 You-Get 合并视频,可以使用 --no-merge/-n

下载其他内容

直接使用 URL 下载图片,此功能为测试性,远未完成;对于类似 Tumblr 和 Blogger 的大图有效,但是没有办法为所有网站建立通用格式。

1
2
3
4
5
6
7
8
$ 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

暂停与恢复下载

可以使用 Ctrl+C 暂停下载,临时的 .download 文件将保存于输出目录。下次使用 You-Get 传入相同参数时,下载将从上次继续开始。如果下载已经完成,临时的 .download 扩展名文件将会被删除,此时 You-Get 将忽略下载。可以用 --force/-f 强行重新下载,会覆盖同名文件或临时文件!

设置输出路径或文件名

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

1
$ you-get -o ~/Videos -O zoo.webm 'https://www.youtube.com/watch?v=jNQXAC9IVRw'
  • 提示:
  • 此参数可以帮助使用脚本批量下载于指定目录和文件名
  • 如果原视频标题包含有与系统不兼容的字符,此参数十分有效

代理设置

使用 --http-proxy/-x 为 You-Get 设置 HTTP 代理,同时系统代理 (即系统变量 http_proxy) 会自动生效,使用 --no-proxy 则可以强行关闭代理:

1
$ you-get -x 127.0.0.1:8087 'https://www.youtube.com/watch?v=jNQXAC9IVRw'
  • 提示:
  • 如果经常使用代理 (网络封锁了部分网站),考虑将 You-Get 和 ProxyChains 一同使用,并在命令行中设置 alias you-get="proxychains -q you-get"
  • 对于某些网站 (例如 Youku),如果你需要下载仅供中国大陆观看的视频,可以使用 --extractor-proxy/-y 单独为解析器设置代理,也可以使用 -y proxy.uku.im:8888 (鸣谢: Unblock Youku 项目)

播放视频

使用 --player/-p 将视频投喂给播放器,例如 mplayer 或者 vlc,而不是下载视频:

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

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

1
$ 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

并非所有视频可供任何人观看,如果需要登录才可以观看 (例如会员视频),那么可能必须将浏览器的 cookie 通过 --cookies/-c 加载入 You-Get,目前支持两种 cookie 格式:Mozilla cookies.sqliteNetscape cookies.txt

复用解析数据

使用 --url/-u 获得页面所有可下载 URL 列表,使用 --json 参数则可以获得 JSON 格式的数据,目前此功能未定型,JSON 格式未来有可能变化。

哔哩哔哩批量下载脚本

针对哔哩哔哩的视频,若批量下载参数 --playlist 不适用,可以使用以下 Shell 脚本实现批量下载,传入的参数包括:URL、开始集数、结束集数。如果希望同时执行多个下载任务,那么可以使用不同的参数来多次执行脚本,此操作由于频繁访问哔哩哔哩的视频网站,存在 IP 被封的风险(Http 请求返回 403 错误码)。

1
2
#!/bin/sh
for i in $(seq $2 $3); do you-get $1$i; done

或者控制每次执行下载任务之前都等待 N 秒(建议 40 <= N <= 60),防止连续多次下载失败时,频繁访问服务器导致 IP 被封:

1
2
#!/bin/sh
for i in $(seq $2 $3); do sleep 40 && you-get $1$i; done

Shell 脚本使用示例:

1
sh bilibil.sh https://www.bilibili.com/video/av33087749/?p=  1 3

参考资料