2015-11-03 22:08:19 +01:00
==========
gallery-dl
==========
2023-01-03 16:47:57 +01:00
*gallery-dl* is a command-line program
to download image galleries and collections
from several image hosting sites
(see `Supported Sites <docs/supportedsites.md> `__ ).
It is a cross-platform tool
with many `configuration options <docs/configuration.rst> `__
and powerful `filenaming capabilities <docs/formatting.md> `__ .
2016-07-25 11:13:54 +02:00
2015-11-03 22:08:19 +01:00
2023-01-03 16:47:57 +01:00
|pypi| |build|
2017-01-25 02:31:36 +01:00
2021-02-22 21:16:41 +01:00
.. contents ::
2018-11-17 17:42:26 +01:00
Dependencies
============
- Python_ 3.4+
- Requests_
Optional
--------
2023-01-03 16:47:57 +01:00
- FFmpeg_: Pixiv Ugoira conversion
2021-11-29 04:36:43 +01:00
- yt-dlp_ or youtube-dl_: Video downloads
2022-03-24 21:28:58 +01:00
- PySocks_: SOCKS proxy support
2022-06-29 13:22:59 +02:00
- brotli_ or brotlicffi_: Brotli compression support
2023-04-18 17:14:09 +02:00
- PyYAML_: YAML configuration file support
- toml_: TOML configuration file support for Python<3.11
- SecretStorage_: GNOME keyring passwords for `` --cookies-from-browser ``
2017-01-25 02:31:36 +01:00
2015-11-03 22:08:19 +01:00
Installation
2015-11-10 21:13:43 +01:00
============
2015-11-03 22:08:19 +01:00
2021-02-16 02:36:35 +01:00
2018-11-17 17:42:26 +01:00
Pip
---
2017-05-09 15:43:55 +02:00
The stable releases of *gallery-dl* are distributed on PyPI_ and can be
2017-10-27 15:45:38 +02:00
easily installed or upgraded using pip_:
2017-05-09 15:43:55 +02:00
.. code :: bash
2022-03-11 02:48:10 +01:00
python3 -m pip install -U gallery-dl
2017-05-09 15:43:55 +02:00
2020-12-12 16:16:29 +01:00
Installing the latest dev version directly from GitHub can be done with
2017-10-27 15:45:38 +02:00
pip_ as well:
2015-11-03 22:08:19 +01:00
.. code :: bash
2022-03-11 02:48:10 +01:00
python3 -m pip install -U -I --no-deps --no-cache-dir https://github.com/mikf/gallery-dl/archive/master.tar.gz
2015-11-03 22:08:19 +01:00
2019-11-08 16:41:27 +01:00
Note: Windows users should use :code: `py -3` instead of :code: `python3` .
2017-05-09 15:43:55 +02:00
2021-02-22 21:16:41 +01:00
It is advised to use the latest version of pip_,
including the essential packages :code: `setuptools` and :code: `wheel` .
To ensure these packages are up-to-date, run
2019-11-08 16:41:27 +01:00
.. code :: bash
2022-03-11 02:48:10 +01:00
python3 -m pip install --upgrade pip setuptools wheel
2019-11-03 23:52:50 +01:00
2017-05-09 15:43:55 +02:00
2019-05-04 22:50:00 +02:00
Standalone Executable
---------------------
2017-05-09 15:43:55 +02:00
2021-02-22 21:16:41 +01:00
Prebuilt executable files with a Python interpreter and
required Python packages included are available for
2019-05-04 22:50:00 +02:00
2023-12-23 18:24:47 +01:00
- `Windows <https://github.com/mikf/gallery-dl/releases/download/v1.26.5/gallery-dl.exe> `__
2022-12-14 13:51:35 +01:00
(Requires `Microsoft Visual C++ Redistributable Package (x86) <https://aka.ms/vs/17/release/vc_redist.x86.exe> `__ )
2023-12-23 18:24:47 +01:00
- `Linux <https://github.com/mikf/gallery-dl/releases/download/v1.26.5/gallery-dl.bin> `__
2019-05-04 22:50:00 +02:00
2023-01-03 16:47:57 +01:00
Nightly Builds
--------------
2021-02-22 21:16:41 +01:00
| Executables build from the latest commit can be found at
| https://github.com/mikf/gallery-dl/actions/workflows/executables.yml
2017-06-02 09:08:08 +02:00
2017-01-25 02:31:36 +01:00
2019-05-04 22:27:34 +02:00
Snap
----
Linux users that are using a distro that is supported by Snapd_ can install *gallery-dl* from the Snap Store:
.. code :: bash
2022-03-11 02:48:10 +01:00
snap install gallery-dl
2017-01-24 02:36:43 +01:00
2021-02-16 02:36:35 +01:00
2020-05-18 20:34:08 +02:00
Chocolatey
2020-05-30 01:25:20 +02:00
----------
2020-05-18 20:34:08 +02:00
Windows users that have Chocolatey_ installed can install *gallery-dl* from the Chocolatey Community Packages repository:
.. code :: powershell
2022-03-11 02:48:10 +01:00
choco install gallery-dl
2019-05-04 22:50:00 +02:00
2021-02-16 02:36:35 +01:00
2020-10-08 19:08:33 +02:00
Scoop
2021-02-16 02:36:35 +01:00
-----
2020-10-08 19:08:33 +02:00
2021-02-16 02:36:35 +01:00
*gallery-dl* is also available in the Scoop_ "main" bucket for Windows users:
2020-10-08 19:08:33 +02:00
.. code :: powershell
2022-03-11 02:48:10 +01:00
scoop install gallery-dl
2023-01-01 21:17:03 +01:00
2022-12-20 18:26:28 +01:00
Homebrew
--------
For macOS or Linux users using Homebrew:
.. code :: bash
2020-05-30 01:25:20 +02:00
2022-12-20 18:26:28 +01:00
brew install gallery-dl
2021-02-16 02:36:35 +01:00
2023-04-25 17:06:45 +02:00
MacPorts
--------
For macOS users with MacPorts:
.. code :: bash
sudo port install gallery-dl
2023-11-26 17:08:53 +01:00
Docker
--------
Using the Dockerfile in the repository:
.. code :: bash
2023-11-26 17:11:05 +01:00
2023-11-26 17:08:53 +01:00
git clone https://github.com/mikf/gallery-dl.git
cd gallery-dl/
docker build -t gallery-dl:latest .
2023-12-19 01:53:17 +01:00
Pulling image from `Docker Hub <https://hub.docker.com/r/mikf123/gallery-dl> `__ :
.. code :: bash
docker pull mikf123/gallery-dl
docker tag mikf123/gallery-dl gallery-dl
Pulling image from `GitHub Container Registry <https://github.com/mikf/gallery-dl/pkgs/container/gallery-dl> `__ :
.. code :: bash
docker pull ghcr.io/mikf/gallery-dl
docker tag ghcr.io/mikf/gallery-dl gallery-dl
2023-11-26 17:08:53 +01:00
To run the container you will probably want to attach some directories on the host so that the config file and downloads can persist across runs.
2023-12-19 01:53:17 +01:00
Make sure to either download the example config file reference in the repo and place it in the mounted volume location or touch an empty file there.
2023-11-26 17:08:53 +01:00
2023-11-26 17:13:07 +01:00
If you gave the container a different tag or are using podman then make sure you adjust. Run `` docker image ls `` to check the name if you are not sure.
2023-11-26 17:08:53 +01:00
2023-11-26 17:13:07 +01:00
This will remove the container after every use so you will always have a fresh environment for it to run. If you setup a ci-cd pipeline to autobuild the container you can also add a `` --pull=newer `` flag so that when you run it docker will check to see if there is a newer container and download it before running.
2023-11-26 17:08:53 +01:00
.. code :: bash
2023-11-26 17:13:07 +01:00
2023-11-26 17:08:53 +01:00
docker run --rm -v $HOME/Downloads/:/gallery-dl/ -v $HOME/.config/gallery-dl/gallery-dl.conf:/etc/gallery-dl.conf -it gallery-dl:latest
You can also add an alias to your shell for "gallery-dl" or create a simple bash script and drop it somewhere in your $PATH to act as a shim for this command.
2023-01-01 21:17:03 +01:00
2015-11-03 22:08:19 +01:00
Usage
2015-11-10 21:13:43 +01:00
=====
2015-11-03 22:08:19 +01:00
2017-05-09 15:43:55 +02:00
To use *gallery-dl* simply call it with the URLs you wish to download images
2017-01-24 02:36:43 +01:00
from:
2016-11-10 16:22:59 +01:00
2015-11-03 22:08:19 +01:00
.. code :: bash
2023-01-03 16:47:57 +01:00
gallery-dl [OPTIONS]... URLS...
2015-11-03 22:08:19 +01:00
2023-01-03 16:47:57 +01:00
Use :code: `gallery-dl --help` or see `<docs/options.md>`__
for a full list of all command-line options.
2016-11-10 16:22:59 +01:00
2017-01-24 02:36:43 +01:00
Examples
--------
2017-10-27 15:45:38 +02:00
Download images; in this case from danbooru via tag search for 'bonocho':
2017-01-24 02:36:43 +01:00
.. code :: bash
2022-03-11 02:48:10 +01:00
gallery-dl "https://danbooru.donmai.us/posts?tags=bonocho"
2017-01-24 02:36:43 +01:00
2022-03-11 02:10:15 +01:00
Get the direct URL of an image from a site supporting authentication with username & password:
2017-01-24 02:36:43 +01:00
.. code :: bash
2022-03-11 02:48:10 +01:00
gallery-dl -g -u "<username>" -p "<password>" "https://twitter.com/i/web/status/604341487988576256"
2017-01-24 02:36:43 +01:00
2022-08-30 16:30:19 +02:00
Filter manga chapters by chapter number and language:
2020-02-07 23:21:44 +01:00
.. code :: bash
2022-08-30 16:30:19 +02:00
gallery-dl --chapter-filter "10 <= chapter < 20" -o "lang=fr" "https://mangadex.org/title/59793dd0-a2d8-41a2-9758-8197287a8539"
2020-02-07 23:21:44 +01:00
2017-01-24 02:36:43 +01:00
| Search a remote resource for URLs and download images from them:
| (URLs for which no extractor can be found will be silently ignored)
.. code :: bash
2022-03-11 02:48:10 +01:00
gallery-dl "r:https://pastebin.com/raw/FLwrCYsT"
2017-01-24 02:36:43 +01:00
2020-08-15 21:29:02 +02:00
If a site's address is nonstandard for its extractor, you can prefix the URL with the
2020-07-15 21:28:20 +02:00
extractor's name to force the use of a specific extractor:
.. code :: bash
2022-03-11 02:48:10 +01:00
gallery-dl "tumblr:https://sometumblrblog.example"
2020-07-15 21:28:20 +02:00
2015-11-03 22:08:19 +01:00
Configuration
2015-11-10 21:13:43 +01:00
=============
2015-11-03 22:08:19 +01:00
2017-05-09 15:43:55 +02:00
Configuration files for *gallery-dl* use a JSON-based file format.
2015-11-03 22:08:19 +01:00
2023-01-03 16:47:57 +01:00
Documentation
-------------
A list of all available configuration options and their descriptions
can be found in `<docs/configuration.rst>`__ .
| For a default configuration file with available options set to their
default values, see `<docs/gallery-dl.conf>`__ .
| For a commented example with more involved settings and option usage,
see `<docs/gallery-dl-example.conf>`__ .
Locations
---------
2018-03-12 18:15:30 +01:00
*gallery-dl* searches for configuration files in the following places:
2015-11-03 22:08:19 +01:00
2020-12-12 16:16:29 +01:00
Windows:
* `` %APPDATA%\gallery-dl\config.json ``
* `` %USERPROFILE%\gallery-dl\config.json ``
* `` %USERPROFILE%\gallery-dl.conf ``
2015-11-03 22:08:19 +01:00
2023-01-03 16:47:57 +01:00
(`` %USERPROFILE% `` usually refers to a user's home directory,
2020-12-12 16:16:29 +01:00
i.e. `` C:\Users\<username>\ `` )
Linux, macOS, etc.:
* `` /etc/gallery-dl.conf ``
2021-05-16 01:12:37 +02:00
* `` ${XDG_CONFIG_HOME}/gallery-dl/config.json ``
2020-12-12 16:16:29 +01:00
* `` ${HOME}/.config/gallery-dl/config.json ``
* `` ${HOME}/.gallery-dl.conf ``
2015-11-03 22:08:19 +01:00
2023-01-03 16:47:57 +01:00
When run as `executable <Standalone Executable_> `__ ,
*gallery-dl* will also look for a `` gallery-dl.conf `` file
in the same directory as said executable.
2015-11-03 22:08:19 +01:00
2023-01-03 16:47:57 +01:00
It is possible to use more than one configuration file at a time.
In this case, any values from files after the first will get merged
into the already loaded settings and potentially override previous ones.
2020-05-10 23:47:20 +02:00
2017-01-24 02:36:43 +01:00
2016-07-25 11:13:54 +02:00
Authentication
==============
2017-06-23 16:14:51 +02:00
Username & Password
-------------------
2020-05-30 01:25:20 +02:00
Some extractors require you to provide valid login credentials in the form of
2019-07-29 18:22:31 +02:00
a username & password pair. This is necessary for
2022-03-11 02:10:15 +01:00
`` nijie ``
2020-03-14 01:13:14 +01:00
and optional for
2020-12-08 21:05:47 +01:00
`` aryion `` ,
`` danbooru `` ,
`` e621 `` ,
`` exhentai `` ,
`` idolcomplex `` ,
2021-03-03 03:05:25 +01:00
`` imgbb `` ,
2020-12-08 21:05:47 +01:00
`` inkbunny `` ,
2021-06-08 02:06:19 +02:00
`` mangadex `` ,
2021-03-03 03:05:25 +01:00
`` mangoxo `` ,
2021-05-19 02:57:36 +02:00
`` pillowfort `` ,
2020-12-17 16:12:59 +01:00
`` sankaku `` ,
2020-12-08 21:05:47 +01:00
`` subscribestar `` ,
2021-03-29 23:06:47 +02:00
`` tapas `` ,
2020-12-08 21:05:47 +01:00
`` tsumino `` ,
2022-07-29 12:49:04 +02:00
`` twitter `` ,
and `` zerochan `` .
2016-07-25 11:13:54 +02:00
2023-01-03 16:47:57 +01:00
You can set the necessary information in your
`configuration file <Configuration_> `__
2016-07-25 11:13:54 +02:00
2020-05-30 01:25:20 +02:00
.. code :: json
2016-07-25 11:13:54 +02:00
{
"extractor": {
2022-03-11 02:10:15 +01:00
"twitter": {
2016-07-25 11:13:54 +02:00
"username": "<username>",
"password": "<password>"
}
}
}
or you can provide them directly via the
:code: `-u/--username` and :code: `-p/--password` or via the
:code: `-o/--option` command-line options
.. code :: bash
2023-01-03 16:47:57 +01:00
gallery-dl -u "<username>" -p "<password>" "URL"
gallery-dl -o "username=<username>" -o "password=<password>" "URL"
2016-07-25 11:13:54 +02:00
2021-02-22 21:16:41 +01:00
2020-05-30 01:25:20 +02:00
Cookies
-------
For sites where login with username & password is not possible due to
CAPTCHA or similar, or has not been implemented yet, you can use the
cookies from a browser login session and input them into *gallery-dl* .
This can be done via the
2023-01-03 16:47:57 +01:00
`cookies <docs/configuration.rst#extractorcookies> `__
2020-05-30 01:25:20 +02:00
option in your configuration file by specifying
- | the path to a Mozilla/Netscape format cookies.txt file exported by a browser addon
2023-03-14 23:01:36 +01:00
| (e.g. `Get cookies.txt LOCALLY <https://chrome.google.com/webstore/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc> `__ for Chrome,
`Export Cookies <https://addons.mozilla.org/en-US/firefox/addon/export-cookies-txt/> `__ for Firefox)
2020-05-30 01:25:20 +02:00
- | a list of name-value pairs gathered from your browser's web developer tools
| (in `Chrome <https://developers.google.com/web/tools/chrome-devtools/storage/cookies> `__ ,
in `Firefox <https://developer.mozilla.org/en-US/docs/Tools/Storage_Inspector> `__ )
2023-01-03 16:47:57 +01:00
- | the name of a browser to extract cookies from
| (supported browsers are Chromium-based ones, Firefox, and Safari)
2020-05-30 01:25:20 +02:00
For example:
.. code :: json
{
"extractor": {
"instagram": {
"cookies": "$HOME/path/to/cookies.txt"
},
"patreon": {
"cookies": {
"session_id": "K1T57EKu19TR49C51CDjOJoXNQLF7VbdVOiBrC9ye0a"
}
2023-01-03 16:47:57 +01:00
},
"twitter": {
"cookies": ["firefox"]
2020-05-30 01:25:20 +02:00
}
}
}
2023-01-03 16:47:57 +01:00
| You can also specify a cookies.txt file with
the :code: `--cookies` command-line option
| or a browser to extract cookies from with :code: `--cookies-from-browser` :
2020-05-30 01:25:20 +02:00
.. code :: bash
2023-01-03 16:47:57 +01:00
gallery-dl --cookies "$HOME/path/to/cookies.txt" "URL"
gallery-dl --cookies-from-browser firefox "URL"
2020-05-30 01:25:20 +02:00
2021-02-22 21:16:41 +01:00
2017-06-23 16:14:51 +02:00
OAuth
-----
2023-01-05 10:31:57 +01:00
*gallery-dl* supports user authentication via OAuth_ for some extractors.
This is necessary for
`` pixiv ``
and optional for
2023-01-03 16:47:57 +01:00
`` deviantart `` ,
`` flickr `` ,
`` reddit `` ,
`` smugmug `` ,
`` tumblr `` ,
2021-02-22 21:16:41 +01:00
and `` mastodon `` instances.
2023-01-03 16:47:57 +01:00
2023-01-05 10:31:57 +01:00
Linking your account to *gallery-dl* grants it the ability to issue requests
on your account's behalf and enables it to access resources which would
otherwise be unavailable to a public user.
2017-06-23 16:14:51 +02:00
2023-01-05 10:31:57 +01:00
To do so, start by invoking it with `` oauth:<sitename> `` as an argument.
For example:
2017-06-23 16:14:51 +02:00
.. code :: bash
2022-03-11 02:48:10 +01:00
gallery-dl oauth:flickr
2017-06-23 16:14:51 +02:00
You will be sent to the site's authorization page and asked to grant read
2019-03-23 22:11:08 +01:00
access to *gallery-dl* . Authorize it and you will be shown one or more
2017-06-23 16:14:51 +02:00
"tokens", which should be added to your configuration file.
2021-02-22 21:16:41 +01:00
To authenticate with a `` mastodon `` instance, run *gallery-dl* with
`` oauth:mastodon:<instance> `` as argument. For example:
.. code :: bash
2022-03-11 02:48:10 +01:00
gallery-dl oauth:mastodon:pawoo.net
gallery-dl oauth:mastodon:https://mastodon.social/
2021-02-22 21:16:41 +01:00
2018-11-17 17:42:26 +01:00
.. _Python: https://www.python.org/downloads/
.. _PyPI: https://pypi.org/
.. _pip: https://pip.pypa.io/en/stable/
2019-10-11 18:19:39 +02:00
.. _Requests: https://requests.readthedocs.io/en/master/
2018-11-17 17:42:26 +01:00
.. _FFmpeg: https://www.ffmpeg.org/
2021-11-29 04:36:43 +01:00
.. _yt-dlp: https://github.com/yt-dlp/yt-dlp
2019-03-12 21:13:33 +01:00
.. _youtube-dl: https://ytdl-org.github.io/youtube-dl/
2022-03-24 21:28:58 +01:00
.. _PySocks: https://pypi.org/project/PySocks/
2022-06-29 13:22:59 +02:00
.. _brotli: https://github.com/google/brotli
.. _brotlicffi: https://github.com/python-hyper/brotlicffi
2023-04-18 17:14:09 +02:00
.. _PyYAML: https://pyyaml.org/
.. _toml: https://pypi.org/project/toml/
.. _SecretStorage: https://pypi.org/project/SecretStorage/
2019-05-04 22:50:00 +02:00
.. _Snapd: https://docs.snapcraft.io/installing-snapd
2018-11-17 17:42:26 +01:00
.. _OAuth: https://en.wikipedia.org/wiki/OAuth
2020-05-30 01:25:20 +02:00
.. _Chocolatey: https://chocolatey.org/install
2020-10-08 19:08:33 +02:00
.. _Scoop: https://scoop.sh
2017-01-25 02:31:36 +01:00
.. |pypi| image :: https://img.shields.io/pypi/v/gallery-dl.svg
2018-11-17 17:42:26 +01:00
:target: https://pypi.org/project/gallery-dl/
2017-01-25 02:31:36 +01:00
2020-11-17 19:40:45 +01:00
.. |build| image :: https://github.com/mikf/gallery-dl/workflows/tests/badge.svg
:target: https://github.com/mikf/gallery-dl/actions
2018-01-09 15:10:40 +01:00
.. |gitter| image :: https://badges.gitter.im/gallery-dl/main.svg
:target: https://gitter.im/gallery-dl/main