mikf/gallery-dl
GitHub: mikf/gallery-dl
这是一个功能强大的命令行工具,用于从众多图片托管网站批量下载图库、集合及媒体资源。
Stars: 17752 | Forks: 1410
# gallery-dl
*gallery-dl* 是一个命令行程序,
用于从多个图片托管站点
(参见 `Supported Sites `__)
下载图片画廊和集合。
它是一个跨平台工具,
拥有许多
`命令行 `__ 和
`配置 `__
选项,以及强大的
`文件命名功能 `__。
|pypi| |discord| |build|
.. contents::
# 依赖项
- Python_ 3.8+
- Requests_
## 可选
- yt-dlp_ 或 youtube-dl_: HLS/DASH 视频下载,``ytdl`` 集成
- FFmpeg_: Pixiv Ugoira 转换
- mkvmerge_: 精确的 Ugoira 帧时间码
- PySocks_: SOCKS 代理支持
- brotli_ 或 brotlicffi_: Brotli 压缩支持
- zstandard_: Zstandard 压缩支持
- PyYAML_: YAML 配置文件支持
- toml_: Python<3.11 的 TOML 配置文件支持
- SecretStorage_: 用于 ``--cookies-from-browser`` 的 GNOME keyring 密码
- Psycopg_: PostgreSQL 存档支持
- truststore_: 原生系统证书支持
- Jinja_: Jinja 模板支持
# 安装
## Pip
*gallery-dl* 的稳定版本发布在 PyPI_ 上,可以通过
pip_ 轻松安装或升级:
.. code:: bash
```
python3 -m pip install -U gallery-dl
```
也可以使用 pip_ 直接从 GitHub 安装最新的开发版本:
.. code:: bash
```
python3 -m pip install -U --force-reinstall --no-deps https://github.com/mikf/gallery-dl/archive/master.tar.gz
```
如果尚未安装 Requests_,请省略 :code:`--no-deps`。
注意:Windows 用户应使用 :code:`py -3` 代替 :code:`python3`。
建议使用最新版本的 pip_,
包括必需的软件包 :code:`setuptools` 和 :code:`wheel`。
要确保这些软件包是最新的,请运行
.. code:: bash
```
python3 -m pip install --upgrade pip setuptools wheel
```
## 独立可执行文件
包含 Python 解释器和
所需 Python 软件包的预构建可执行文件可用于
- `Windows `__
(需要 `Microsoft Visual C++ Redistributable Package (x86) `__)
- `Linux `__
## 每日构建
| 基于最新提交构建的可执行文件可以在
| https://github.com/gdl-org/builds/releases 找到
## Snap
使用受 Snapd_ 支持的发行版的 Linux 用户可以从 Snap Store 安装 *gallery-dl*:
.. code:: bash
```
snap install gallery-dl
```
## Chocolatey
已安装 Chocolatey_ 的 Windows 用户可以从 Chocolatey Community Packages 仓库安装 *gallery-dl*:
.. code:: powershell
```
choco install gallery-dl
```
## Scoop
*gallery-dl* 也可以在 Scoop_ 的 "main" bucket 中提供给 Windows 用户:
.. code:: powershell
```
scoop install gallery-dl
```
## Homebrew
对于使用 Homebrew 的 macOS 或 Linux 用户:
.. code:: bash
```
brew install gallery-dl
```
## MacPorts
对于使用 MacPorts 的 macOS 用户:
.. code:: bash
```
sudo port install gallery-dl
```
## Docker
使用仓库中的 Dockerfile:
.. code:: bash
```
git clone https://github.com/mikf/gallery-dl.git
cd gallery-dl/
docker build -t gallery-dl:latest .
```
从 `Docker Hub `__ 拉取镜像:
.. code:: bash
```
docker pull mikf123/gallery-dl
docker tag mikf123/gallery-dl gallery-dl
```
从 `GitHub Container Registry `__ 拉取镜像:
.. code:: bash
```
docker pull ghcr.io/mikf/gallery-dl
docker tag ghcr.io/mikf/gallery-dl gallery-dl
```
使用 ``dev`` 标签拉取基于最新提交构建的 *Nightly Build* 镜像:
.. code:: bash
```
docker pull mikf123/gallery-dl:dev
docker pull ghcr.io/mikf/gallery-dl:dev
```
要运行容器,您可能需要挂载主机上的某些目录,以便配置文件和下载内容在运行之间保持持久。
确保下载仓库中引用的示例配置文件并将其放置在挂载卷位置,或者在那里创建一个空文件。
如果您给容器指定了不同的标签或正在使用 podman,请确保进行相应调整。如果不确定,请运行 ``docker image ls`` 检查名称。
这将在每次使用后删除容器,以便您始终拥有运行它的全新环境。如果您设置了 CI/CD 流水线以自动构建容器,还可以添加 ``--pull=newer`` 标志,以便在运行时 Docker 检查是否有更新的容器并在运行前下载它。
.. code:: bash
```
docker run --rm -v $HOME/Downloads/:/gallery-dl/ -v $HOME/.config/gallery-dl/gallery-dl.conf:/etc/gallery-dl.conf -it gallery-dl:latest
```
您还可以为 "gallery-dl" 向您的 shell 添加别名,或者创建一个简单的 bash 脚本并将其放在 $PATH 的某个位置,作为此命令的垫片。
## Nix 和 Home Manager
将 *gallery-dl* 添加到您的系统环境:
.. code:: nix
```
environment.systemPackages = with pkgs; [
gallery-dl
];
```
使用 :code:`nix-shell`
.. code:: bash
```
nix-shell -p gallery-dl
```
.. code:: bash
```
nix-shell -p gallery-dl --run "gallery-dl "
```
对于 Home Manager 用户,您可以声明式地管理 *gallery-dl*:
.. code:: nix
```
programs.gallery-dl = {
enable = true;
settings = {
extractor.base-directory = "~/Downloads";
};
};
```
或者,如果您不想声明式管理它,只需将其添加到 :code:`home.packages`:
.. code:: nix
```
home.packages = with pkgs; [
gallery-dl
];
```
进行这些更改后,只需重新构建您的配置并打开一个新的 shell,即可使用 *gallery-dl*。
# 用法
要使用 *gallery-dl*,只需调用它并附带您希望下载图片的 URL:
.. code:: bash
```
gallery-dl [OPTIONS]... URLS...
```
使用 :code:`gallery-dl --help` 或参阅 ``__
获取所有命令行选项的完整列表。
## 示例
下载图片;在本例中,通过标签搜索 'bonocho' 从 danbooru 下载:
.. code:: bash
```
gallery-dl "https://danbooru.donmai.us/posts?tags=bonocho"
```
从支持用户名和密码身份验证的站点获取图片的直接 URL:
.. code:: bash
```
gallery-dl -g -u "" -p "" "https://twitter.com/i/web/status/604341487988576256"
```
按章节号和语言筛选漫画章节:
.. code:: bash
```
gallery-dl --chapter-filter "10 <= chapter < 20" -o "lang=fr" "https://mangadex.org/title/59793dd0-a2d8-41a2-9758-8197287a8539"
```
| 搜索远程资源中的 URL 并从中下载图片:
| (无法找到提取器的 URL 将被静默忽略)
.. code:: bash
```
gallery-dl "r:https://pastebin.com/raw/FLwrCYsT"
```
如果站点的地址对于其提取器来说是非标准的,您可以在 URL 前加上
提取器名称以强制使用特定的提取器:
.. code:: bash
```
gallery-dl "tumblr:https://sometumblrblog.example"
```
# 配置
*gallery-dl* 的配置文件使用基于 JSON 的文件格式。
## 文档
所有可用配置选项及其描述的列表
可以在 ``__ 找到。
| 有关可用选项设置为其默认值的默认配置文件,请参阅 ``__。
| 有关包含更复杂设置和选项使用的注释示例,
请参阅 ``__。
## 位置
*gallery-dl* 在以下位置搜索配置文件:
Windows:
* ``%APPDATA%\gallery-dl\config.json``
* ``%USERPROFILE%\gallery-dl\config.json``
* ``%USERPROFILE%\gallery-dl.conf``
```
(``%USERPROFILE%`` usually refers to a user's home directory,
i.e. ``C:\Users\\``)
```
Linux、macOS 等:
* ``/etc/gallery-dl.conf``
* ``${XDG_CONFIG_HOME}/gallery-dl/config.json``
* ``${HOME}/.config/gallery-dl/config.json``
* ``${HOME}/.gallery-dl.conf``
当以 `可执行文件 `__ 运行时,
*gallery-dl* 也会在与该可执行文件相同的目录中查找 ``gallery-dl.conf`` 文件。
可以同时使用多个配置文件。
在这种情况下,第一个文件之后文件中的任何值将合并
到已加载的设置中,并可能覆盖之前的设置。
# 身份验证
## 用户名和密码
某些提取器要求您以用户名和密码对的形式提供有效的登录凭据。这对于
``nijie``
是必需的,对于
``aryion``、
``danbooru``、
``e621``、
``idolcomplex``、
``imgbb``、
``inkbunny``、
``mangadex``、
``mangoxo``、
``pillowfort``、
``sankaku``、
``subscribestar``、
``tapas``、
``tsumino``
和 ``zerochan``
是可选的。
您可以在您的
`配置文件 `__
中设置必要的信息
.. code:: json
```
{
"extractor": {
"subscribestar": {
"username": "",
"password": ""
}
}
}
```
或者您可以通过
:code:`-u/--username` 和 :code:`-p/--password` 或通过
:code:`-o/--option` 命令行选项直接提供它们
.. code:: bash
```
gallery-dl -u "" -p "" "URL"
gallery-dl -o "username=" -o "password=" "URL"
```
## Cookies
对于由于 CAPTCHA 或类似原因无法使用用户名和密码登录,或者尚未实现登录的站点,您可以使用
浏览器登录会话的 cookies 并将其输入到 *gallery-dl* 中。
这可以通过配置文件中的
`cookies `__
选项来完成,指定
- | 由浏览器插件导出的 Mozilla/Netscape 格式 cookies.txt 文件的路径
| (例如用于 Chrome 的 `Get cookies.txt LOCALLY `__,
用于 Firefox 的 `Export Cookies `__)
- | 从浏览器的 Web 开发者工具中收集的名称-值对列表
| (在 `Chrome `__ 中,
在 `Firefox `__ 中)
- | 用于从中提取 cookies 的浏览器名称
| (支持的浏览器包括基于 Chromium 的浏览器、Firefox 和 Safari)
例如:
.. code:: json
```
{
"extractor": {
"instagram": {
"cookies": "$HOME/path/to/cookies.txt"
},
"patreon": {
"cookies": {
"session_id": "K1T57EKu19TR49C51CDjOJoXNQLF7VbdVOiBrC9ye0a"
}
},
"twitter": {
"cookies": ["firefox"]
}
}
}
```
| 您也可以通过
:code:`--cookies` 命令行选项指定 cookies.txt 文件
| 或通过 :code:`--cookies-from-browser` 指定浏览器以从中提取 cookies:
.. code:: bash
```
gallery-dl --cookies "$HOME/path/to/cookies.txt" "URL"
gallery-dl --cookies-from-browser firefox "URL"
```
## OAuth
*gallery-dl* 支持通过 OAuth_ 对某些提取器进行用户身份验证。
这对于
``pixiv``
是必需的,对于
``deviantart``、
``flickr``、
``reddit``、
``smugmug``、
``tumblr``
和 ``mastodon``
实例是可选的。
将您的帐户关联到 *gallery-dl* 将授予其代表您的帐户发出请求的权限,并使其能够访问
公共用户无法访问的资源。
为此,首先使用 ``oauth:`` 作为参数调用它。
例如:
.. code:: bash
```
gallery-dl oauth:flickr
```
您将被带到站点的授权页面,并被要求授予 *gallery-dl* 读取访问权限。对其进行授权,您将看到一个或多个
"令牌",应将其添加到您的配置文件中。
要使用 ``mastodon`` 实例进行身份验证,请使用
``oauth:mastodon:`` 作为参数运行 *gallery-dl*。例如:
.. code:: bash
```
gallery-dl oauth:mastodon:pawoo.net
gallery-dl oauth:mastodon:https://mastodon.social/
```
.. _Python: https://www.python.org/downloads/
.. _PyPI: https://pypi.org/
.. _pip: https://pip.pypa.io/en/stable/
.. _Requests: https://requests.readthedocs.io/en/latest/
.. _FFmpeg: https://www.ffmpeg.org/
.. _mkvmerge: https://www.matroska.org/downloads/mkvtoolnix.html
.. _yt-dlp: https://github.com/yt-dlp/yt-dlp
.. _youtube-dl: https://ytdl-org.github.io/youtube-dl/
.. _PySocks: https://pypi.org/project/PySocks/
.. _brotli: https://github.com/google/brotli
.. _brotlicffi: https://github.com/python-hyper/brotlicffi
.. _zstandard: https://github.com/indygreg/python-zstandard
.. _PyYAML: https://pyyaml.org/
.. _toml: https://pypi.org/project/toml/
.. _SecretStorage: https://pypi.org/project/SecretStorage/
.. _Psycopg: https://www.psycopg.org/
.. _truststore: https://truststore.readthedocs.io/en/latest/
.. _Jinja: https://jinja.palletsprojects.com/
.. _Snapd: https://docs.snapcraft.io/installing-snapd
.. _OAuth: https://en.wikipedia.org/wiki/OAuth
.. _Chocolatey: https://chocolatey.org/install
.. _Scoop: https://scoop.sh/
.. |pypi| image:: https://img.shields.io/pypi/v/gallery-dl?logo=pypi&label=PyPI
:: https://pypi.org/project/gallery-dl/
.. |build| image:: https://github.com/mikf/gallery-dl/actions/workflows/tests.yml/badge.svg
:target: https://github.com/mikf/gallery-dl/actions
.. |gitter| image:: https://badges.gitter.im/gallery-dl/main.svg
:target: https://gitter.im/gallery-dl/main
.. |discord| image:: https://img.shields.io/discord/1067148002722062416?logo=discord&label=Discord&color=blue
:target: https://discord.gg/rSzQwRvGnE
标签:BeEF, collections, FFmpeg, galleries, Python, yt-dlp, 代理支持, 告警, 图床, 图片下载, 媒体下载, 字符串匹配, 工具, 开源, 恶意代码分析, 批量下载, 数据提取, 无后门, 爬虫, 视频下载, 逆向工具, 配置文件