summaryrefslogtreecommitdiffstats
path: root/data/man/gallery-dl.conf.5
diff options
context:
space:
mode:
Diffstat (limited to 'data/man/gallery-dl.conf.5')
-rw-r--r--data/man/gallery-dl.conf.51147
1 files changed, 945 insertions, 202 deletions
diff --git a/data/man/gallery-dl.conf.5 b/data/man/gallery-dl.conf.5
index 1c2a2a0..12eea08 100644
--- a/data/man/gallery-dl.conf.5
+++ b/data/man/gallery-dl.conf.5
@@ -1,4 +1,4 @@
-.TH "GALLERY-DL.CONF" "5" "2025-05-23" "1.29.7" "gallery-dl Manual"
+.TH "GALLERY-DL.CONF" "5" "2025-07-27" "1.30.2" "gallery-dl Manual"
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
@@ -99,8 +99,8 @@ A \f[I]format string\f[] to build filenames for downloaded files with.
If this is an \f[I]object\f[], it must contain Python expressions mapping to the
filename format strings to use.
-These expressions are evaluated in the order as specified in Python 3.6+
-and in an undetermined order in Python 3.4 and 3.5.
+These expressions are evaluated in the specified order until one evaluates
+to \f[I]True\f[].
The available replacement keys depend on the extractor used. A list
of keys for a specific one can be acquired by calling *gallery-dl*
@@ -242,14 +242,15 @@ Share number of skipped downloads between parent and child extractors.
.br
* "/!? (){}"
.br
-* {" ": "_", "/": "-", "|": "-", ":": "_-_", "*": "_+_"}
+* {"/": "_", "+": "_+_", "({[": "(", "]})": ")", "a-z": "*"}
.IP "Description:" 4
-A string of characters to be replaced with the value of
+A \f[I]string\f[] of characters to be replaced with the value of
.br
\f[I]path-replace\f[]
-or an object mapping invalid/unwanted characters to their replacements
+or an \f[I]object\f[] mapping invalid/unwanted characters, character sets,
.br
+or character ranges to their replacements
for generated path segment names.
.br
@@ -461,13 +462,13 @@ response before \f[I]retrying\f[] the request.
\f[I][E621]\f[],
\f[I][foolfuuka]:search\f[],
\f[I]itaku\f[],
-\f[I]koharu\f[],
\f[I]newgrounds\f[],
\f[I][philomena]\f[],
-\f[I]pixiv:novel\f[],
+\f[I]pixiv-novel\f[],
\f[I]plurk\f[],
\f[I]poipiku\f[] ,
\f[I]pornpics\f[],
+\f[I]schalenetwork\f[],
\f[I]scrolller\f[],
\f[I]soundgasm\f[],
\f[I]urlgalleries\f[],
@@ -541,7 +542,7 @@ This is supported for
.br
* \f[I]booruvar\f[] (*)
.br
-* \f[I]coomerparty\f[]
+* \f[I]coomer\f[]
.br
* \f[I]danbooru\f[] (*)
.br
@@ -555,6 +556,8 @@ This is supported for
.br
* \f[I]exhentai\f[]
.br
+* \f[I]girlswithmuscle\f[]
+.br
* \f[I]horne\f[] (R)
.br
* \f[I]idolcomplex\f[]
@@ -563,9 +566,11 @@ This is supported for
.br
* \f[I]inkbunny\f[]
.br
-* \f[I]kemonoparty\f[]
+* \f[I]iwara\f[]
+.br
+* \f[I]kemono\f[]
.br
-* \f[I]koharu\f[]
+* \f[I]madokami\f[] (R)
.br
* \f[I]mangadex\f[]
.br
@@ -577,8 +582,12 @@ This is supported for
.br
* \f[I]pillowfort\f[]
.br
+* \f[I]rule34xyz\f[]
+.br
* \f[I]sankaku\f[]
.br
+* \f[I]schalenetwork\f[]
+.br
* \f[I]scrolller\f[]
.br
* \f[I]seiga\f[]
@@ -828,11 +837,6 @@ User-Agent header value used for HTTP requests.
Setting this value to \f[I]"browser"\f[] will try to automatically detect
and use the \f[I]User-Agent\f[] header of the system's default browser.
-Note:
-This option has *no* effect if
-\f[I]extractor.browser\f[]
-is enabled.
-
.SS extractor.*.browser
.IP "Type:" 6
@@ -840,12 +844,14 @@ is enabled.
.IP "Default:" 9
.br
-* \f[I]"firefox"\f[]: \f[I]artstation\f[], \f[I]fanbox\f[], \f[I]mangasee\f[], \f[I]twitter\f[]
+* \f[I]"firefox"\f[]: \f[I]artstation\f[], \f[I]behance\f[], \f[I]fanbox\f[], \f[I]twitter\f[]
.br
* \f[I]null\f[]: otherwise
.IP "Example:" 4
.br
+* "firefox/128:linux"
+.br
* "chrome:macos"
.IP "Description:" 4
@@ -855,10 +861,23 @@ by using their default HTTP headers and TLS ciphers for HTTP requests.
Optionally, the operating system used in the \f[I]User-Agent\f[] header can be
specified after a \f[I]:\f[] (\f[I]windows\f[], \f[I]linux\f[], or \f[I]macos\f[]).
+Supported browsers:
+
+.br
+* \f[I]firefox\f[]
+.br
+* \f[I]firefox/140\f[]
+.br
+* \f[I]firefox/128\f[]
+.br
+* \f[I]chrome\f[]
+.br
+* \f[I]chrome/138\f[]
+.br
+* \f[I]chrome/111\f[]
+
Note:
-This option overrides
-\f[I]user-agent\f[]
-and sets custom
+This option sets custom
\f[I]headers\f[]
and
\f[I]ciphers\f[]
@@ -888,7 +907,10 @@ instead of the extractor's \f[I]root\f[] domain.
.SS extractor.*.headers
.IP "Type:" 6
-\f[I]object\f[] (name -> value)
+.br
+* \f[I]"string"\f[]
+.br
+* \f[I]object\f[] (name -> value)
.IP "Default:" 9
.. code:: json
@@ -908,13 +930,22 @@ to be sent with each HTTP request,
To disable sending a header, set its value to \f[I]null\f[].
+Set this option to \f[I]"firefox"\f[] or \f[I]"chrome"\f[]
+to use these browser's default headers.
+
.SS extractor.*.ciphers
.IP "Type:" 6
-\f[I]list\f[] of \f[I]strings\f[]
+.br
+* \f[I]string\f[]
+.br
+* \f[I]list\f[] of \f[I]strings\f[]
.IP "Example:" 4
-.. code:: json
+.br
+* "firefox"
+.br
+* .. code:: json
["ECDHE-ECDSA-AES128-GCM-SHA256",
"ECDHE-RSA-AES128-GCM-SHA256",
@@ -928,6 +959,9 @@ List of TLS/SSL cipher suites in
to be passed to
\f[I]ssl.SSLContext.set_ciphers()\f[]
+Set this option to \f[I]"firefox"\f[] or \f[I]"chrome"\f[]
+to use these browser's default ciphers.
+
.SS extractor.*.tls12
.IP "Type:" 6
@@ -935,7 +969,7 @@ to be passed to
.IP "Default:" 9
.br
-* \f[I]false\f[]: \f[I]artstation\f[]
+* \f[I]false\f[]: \f[I]artstation\f[], \f[I]behance\f[]
.br
* \f[I]true\f[]: otherwise
@@ -1228,9 +1262,9 @@ for available \f[I]PRAGMA\f[] statements and further details.
.SS extractor.*.actions
.IP "Type:" 6
.br
-* \f[I]object\f[] (pattern -> action(s))
+* \f[I]object\f[] (pattern -> \f[I]Action(s)\f[])
.br
-* \f[I]list\f[] of \f[I]lists\f[] with pattern -> action(s) pairs as elements
+* \f[I]list\f[] of \f[I]lists\f[] with pattern -> \f[I]Action(s)\f[] pairs as elements
.IP "Example:" 4
.. code:: json
@@ -1259,57 +1293,17 @@ for available \f[I]PRAGMA\f[] statements and further details.
.IP "Description:" 4
-Perform an \f[I]action\f[] when logging a message matched by \f[I]pattern\f[].
+Perform an \f[I]Action\f[] when logging a message matched by \f[I]pattern\f[].
\f[I]pattern\f[] is parsed as severity level (\f[I]debug\f[], \f[I]info\f[], \f[I]warning\f[], \f[I]error\f[], or integer value)
-followed by an optional \f[I]Python Regular Expression\f[]
-separated by a colon \f[I]:\f[].
+followed by an optional
+\f[I]Python Regular Expression\f[]
+separated by a colon \f[I]:\f[]
+
Using \f[I]*\f[] as level or leaving it empty
matches logging messages of all levels
(e.g. \f[I]*:<re>\f[] or \f[I]:<re>\f[]).
-\f[I]action\f[] is parsed as action type
-followed by (optional) arguments.
-
-It is possible to specify more than one \f[I]action\f[] per \f[I]pattern\f[]
-by providing them as a \f[I]list\f[]: \f[I]["<action1>", "<action2>", …]\f[]
-
-Supported Action Types:
-
-\f[I]status\f[]:
-Modify job exit status.
-.br
-Expected syntax is \f[I]<operator> <value>\f[] (e.g. \f[I]= 100\f[]).
-.br
-
-Supported operators are
-\f[I]=\f[] (assignment),
-\f[I]&\f[] (bitwise AND),
-\f[I]|\f[] (bitwise OR),
-\f[I]^\f[] (bitwise XOR).
-\f[I]level\f[]:
-Modify severity level of the current logging message.
-.br
-Can be one of \f[I]debug\f[], \f[I]info\f[], \f[I]warning\f[], \f[I]error\f[] or an integer value.
-.br
-\f[I]print\f[]:
-Write argument to stdout.
-\f[I]exec\f[]:
-Run a shell command.
-\f[I]abort\f[]:
-Stop the current extractor run.
-\f[I]terminate\f[]:
-Stop the current extractor run, including parent extractors.
-\f[I]restart\f[]:
-Restart the current extractor run.
-\f[I]wait\f[]:
-Sleep for a given \f[I]Duration\f[] or
-.br
-wait until Enter is pressed when no argument was given.
-.br
-\f[I]exit\f[]:
-Exit the program with the given argument as exit status.
-
.SS extractor.*.postprocessors
.IP "Type:" 6
@@ -1443,6 +1437,25 @@ This value gets internally used as the \f[I]verify\f[] parameter for the
\f[I]requests.request()\f[] method.
+.SS extractor.*.truststore
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+Use a
+.br
+\f[I]truststore\f[]
+\f[I]SSLContext\f[] for verifying SSL/TLS certificates
+to make use of your system's native certificate stores
+.br
+instead of relying on
+\f[I]certifi\f[]
+certificates.
+
+
.SS extractor.*.download
.IP "Type:" 6
\f[I]bool\f[]
@@ -1700,6 +1713,17 @@ Try to follow external URLs of embedded players.
Limit the number of posts/projects to download.
+.SS extractor.artstation.mviews
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]true\f[]
+
+.IP "Description:" 4
+Download \f[I].mview\f[] files.
+
+
.SS extractor.artstation.previews
.IP "Type:" 6
\f[I]bool\f[]
@@ -1708,7 +1732,7 @@ Limit the number of posts/projects to download.
\f[I]false\f[]
.IP "Description:" 4
-Download video previews.
+Download embed previews.
.SS extractor.artstation.videos
@@ -2043,7 +2067,7 @@ Possibly available formats are
\f[I]string\f[]
.IP "Default:" 9
-\f[I]"/api/_001"\f[]
+\f[I]"/api/_001_v2"\f[]
.IP "Description:" 4
API endpoint for retrieving file URLs.
@@ -2135,7 +2159,7 @@ Available types are
* \f[I]list\f[] of \f[I]strings\f[]
.IP "Default:" 9
-\f[I]["user-models", "user-posts"]\f[]
+\f[I]["user-images", "user-videos"]\f[]
.IP "Description:" 4
A (comma-separated) list of subcategories to include
@@ -2154,6 +2178,14 @@ Possible values are
It is possible to use \f[I]"all"\f[] instead of listing all values separately.
+.IP "Note:" 4
+To get a more complete set of metadata
+like \f[I]model['name']\f[] and \f[I]post['title']\f[],
+include \f[I]user-models\f[] and \f[I]user-posts\f[]
+as well as the default \f[I]user-images\f[] and \f[I]user-videos\f[]:
+
+\f[I]["user-models", "user-posts", "user-images", "user-videos"]\f[]
+
.SS extractor.civitai.metadata
.IP "Type:" 6
@@ -2169,14 +2201,14 @@ It is possible to use \f[I]"all"\f[] instead of listing all values separately.
.IP "Example:" 4
.br
-* "generation,version"
+* "generation,post,version"
.br
-* ["generation", "version"]
+* ["version", "generation"]
.IP "Description:" 4
-Extract additional \f[I]generation\f[] and \f[I]version\f[] metadata.
+Extract additional \f[I]generation\f[], \f[I]version\f[], and \f[I]post\f[] metadata.
-Note: This requires 1 additional HTTP request per image or video.
+Note: This requires 1 or more additional API requests per image or video.
.SS extractor.civitai.nsfw
@@ -2375,6 +2407,17 @@ greater than the per-page limit, gallery-dl will stop after the first
batch. The value cannot be less than 1.
+.SS extractor.dankefuerslesen.zip
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+Download each chapter as a single ZIP archive instead of individual images.
+
+
.SS extractor.deviantart.auto-watch
.IP "Type:" 6
\f[I]bool\f[]
@@ -2806,6 +2849,18 @@ Discord Bot Token for API requests.
You can follow \f[I]this guide\f[] to get a token.
+.SS extractor.dynastyscans.anthology.metadata
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+Extract \f[I]alert\f[], \f[I]description\f[], and \f[I]status\f[] metadata
+from an anthology's HTML page.
+
+
.SS extractor.[E621].metadata
.IP "Type:" 6
.br
@@ -2922,8 +2977,27 @@ Selects how to handle "you do not have enough GP" errors.
\f[I]null\f[]
.IP "Description:" 4
-Sets a custom image download limit and
-stops extraction when it gets exceeded.
+Set a custom image download limit and perform
+\f[I]limits-action\f[]
+when it gets exceeded.
+
+
+.SS extractor.exhentai.limits-action
+.IP "Type:" 6
+\f[I]string\f[]
+
+.IP "Default:" 9
+\f[I]"stop"\f[]
+
+.IP "Description:" 4
+Action to perform when the image limit is exceeded.
+
+.br
+* "stop": Stop the current extractor run.
+.br
+* "wait": Wait for user input.
+.br
+* "reset": Spend GP to reset your account's image limits.
.SS extractor.exhentai.metadata
@@ -2937,8 +3011,10 @@ stops extraction when it gets exceeded.
Load extended gallery metadata from the
\f[I]API\f[].
-Adds \f[I]archiver_key\f[], \f[I]posted\f[], and \f[I]torrents\f[].
-Makes \f[I]date\f[] and \f[I]filesize\f[] more precise.
+.br
+* Adds \f[I]archiver_key\f[], \f[I]posted\f[], and \f[I]torrents\f[]
+.br
+* Provides exact \f[I]date\f[] and \f[I]filesize\f[]
.SS extractor.exhentai.original
@@ -2964,6 +3040,9 @@ Selects an alternative source to download files from.
.br
* \f[I]"hitomi"\f[]: Download the corresponding gallery from \f[I]hitomi.la\f[]
+.br
+* \f[I]"metadata"\f[]: Load only a gallery's metadata from the
+\f[I]API\f[]
.SS extractor.exhentai.tags
@@ -2990,6 +3069,36 @@ for example \f[I]tags_artist\f[] or \f[I]tags_character\f[].
Extract comments that include photo attachments made by the author of the post.
+.SS extractor.facebook.include
+.IP "Type:" 6
+.br
+* \f[I]string\f[]
+.br
+* \f[I]list\f[] of \f[I]strings\f[]
+
+.IP "Default:" 9
+\f[I]"photos"\f[]
+
+.IP "Example:" 4
+.br
+* "avatar,photos"
+.br
+* ["avatar", "photos"]
+
+.IP "Description:" 4
+A (comma-separated) list of subcategories to include
+when processing a user profile.
+
+Supported values are
+
+.br
+* \f[I]avatar\f[]
+.br
+* \f[I]photos\f[]
+
+It is possible to use \f[I]"all"\f[] instead of listing all values separately.
+
+
.SS extractor.facebook.videos
.IP "Type:" 6
.br
@@ -3048,6 +3157,17 @@ extraction and download for YouTube, Vimeo, and SoundCloud embeds.
* \f[I]false\f[]: Ignore embeds.
+.SS extractor.fanbox.fee-max
+.IP "Type:" 6
+\f[I]integer\f[]
+
+.IP "Description:" 4
+Do not request API data or extract files from posts
+that require a fee (\f[I]feeRequired\f[]) greater than the specified amount.
+
+Note: This option has no effect on individual post URLs.
+
+
.SS extractor.fanbox.metadata
.IP "Type:" 6
.br
@@ -3495,13 +3615,15 @@ Selects which API endpoints to use.
.IP "Description:" 4
Controls from which position to start the extraction process from.
+\f[I]true\f[]
+Start from the beginning.
.br
-* \f[I]true\f[]: Start from the beginning.
Log the most recent \f[I]cursor\f[] value when interrupted before reaching the end.
.br
-* \f[I]false\f[]: Start from the beginning.
-.br
-* any \f[I]string\f[]: Start from the position defined by this value.
+\f[I]false\f[]
+Start from the beginning.
+any \f[I]string\f[]
+Start from the position defined by this value.
.SS extractor.instagram.include
@@ -3651,6 +3773,42 @@ Do not download videos
Split \f[I]stories\f[] elements into separate posts.
+.SS extractor.itaku.include
+.IP "Type:" 6
+.br
+* \f[I]string\f[]
+.br
+* \f[I]list\f[] of \f[I]strings\f[]
+
+.IP "Default:" 9
+\f[I]"gallery"\f[]
+
+.IP "Example:" 4
+.br
+* "stars,gallery"
+.br
+* ["stars", "gallery"]
+
+.IP "Description:" 4
+A (comma-separated) list of subcategories to include
+when processing a user profile.
+
+Supported values are
+
+.br
+* \f[I]gallery\f[]
+.br
+* \f[I]posts\f[]
+.br
+* \f[I]followers\f[]
+.br
+* \f[I]following\f[]
+.br
+* \f[I]stars\f[]
+
+It is possible to use \f[I]"all"\f[] instead of listing all values separately.
+
+
.SS extractor.itaku.videos
.IP "Type:" 6
\f[I]bool\f[]
@@ -3662,7 +3820,33 @@ Split \f[I]stories\f[] elements into separate posts.
Download video files.
-.SS extractor.kemonoparty.archives
+.SS extractor.iwara.include
+.IP "Type:" 6
+.br
+* \f[I]string\f[]
+.br
+* \f[I]list\f[] of \f[I]strings\f[]
+
+.IP "Default:" 9
+\f[I]["user-images", "user-videos"]\f[]
+
+.IP "Description:" 4
+A (comma-separated) list of subcategories to include
+when processing a user profile.
+
+Possible values are
+
+.br
+* \f[I]"user-images"\f[]
+.br
+* \f[I]"user-videos"\f[]
+.br
+* \f[I]"user-playlists"\f[]
+
+It is possible to use \f[I]"all"\f[] instead of listing all values separately.
+
+
+.SS extractor.kemono.archives
.IP "Type:" 6
\f[I]bool\f[]
@@ -3676,7 +3860,7 @@ Extract additional metadata for \f[I]archives\f[] files, including
Note: This requires 1 additional HTTP request per \f[I]archives\f[] file.
-.SS extractor.kemonoparty.comments
+.SS extractor.kemono.comments
.IP "Type:" 6
\f[I]bool\f[]
@@ -3689,23 +3873,39 @@ Extract \f[I]comments\f[] metadata.
Note: This requires 1 additional HTTP request per post.
-.SS extractor.kemonoparty.duplicates
+.SS extractor.kemono.duplicates
.IP "Type:" 6
-\f[I]bool\f[]
+.br
+* \f[I]bool\f[]
+.br
+* \f[I]string\f[]
+.br
+* \f[I]list\f[] of \f[I]strings\f[]
.IP "Default:" 9
\f[I]false\f[]
+.IP "Example:" 4
+.br
+* "attachment,inline"
+.br
+* ["file", "attachment"]
+
.IP "Description:" 4
Controls how to handle duplicate files in a post.
+\f[I]true\f[]
+Download duplicates
+\f[I]false\f[]
+Ignore duplicates
+any \f[I]list\f[] or \f[I]string\f[]
+Download a duplicate file if its \f[I]type\f[] is in the given list
.br
-* \f[I]true\f[]: Download duplicates
+Ignore it otherwise
.br
-* \f[I]false\f[]: Ignore duplicates
-.SS extractor.kemonoparty.dms
+.SS extractor.kemono.dms
.IP "Type:" 6
\f[I]bool\f[]
@@ -3716,7 +3916,7 @@ Controls how to handle duplicate files in a post.
Extract a user's direct messages as \f[I]dms\f[] metadata.
-.SS extractor.kemonoparty.announcements
+.SS extractor.kemono.announcements
.IP "Type:" 6
\f[I]bool\f[]
@@ -3727,7 +3927,7 @@ Extract a user's direct messages as \f[I]dms\f[] metadata.
Extract a user's announcements as \f[I]announcements\f[] metadata.
-.SS extractor.kemonoparty.endpoint
+.SS extractor.kemono.endpoint
.IP "Type:" 6
\f[I]string\f[]
@@ -3762,7 +3962,7 @@ Provides more metadata, but might not return a creator's first/last posts.
.br
-.SS extractor.kemonoparty.favorites
+.SS extractor.kemono.favorites
.IP "Type:" 6
\f[I]string\f[]
@@ -3775,7 +3975,7 @@ Determines the type of favorites to be downloaded.
Available types are \f[I]artist\f[], and \f[I]post\f[].
-.SS extractor.kemonoparty.files
+.SS extractor.kemono.files
.IP "Type:" 6
\f[I]list\f[] of \f[I]strings\f[]
@@ -3788,7 +3988,7 @@ Determines the type and order of files to be downloaded.
Available types are \f[I]file\f[], \f[I]attachments\f[], and \f[I]inline\f[].
-.SS extractor.kemonoparty.max-posts
+.SS extractor.kemono.max-posts
.IP "Type:" 6
\f[I]integer\f[]
@@ -3799,7 +3999,7 @@ Available types are \f[I]file\f[], \f[I]attachments\f[], and \f[I]inline\f[].
Limit the number of posts to download.
-.SS extractor.kemonoparty.metadata
+.SS extractor.kemono.metadata
.IP "Type:" 6
\f[I]bool\f[]
@@ -3810,7 +4010,7 @@ Limit the number of posts to download.
Extract \f[I]username\f[] and \f[I]user_profile\f[] metadata.
-.SS extractor.kemonoparty.revisions
+.SS extractor.kemono.revisions
.IP "Type:" 6
.br
* \f[I]bool\f[]
@@ -3828,7 +4028,7 @@ Set this to \f[I]"unique"\f[] to filter out duplicate revisions.
Note: This requires 1 additional HTTP request per post.
-.SS extractor.kemonoparty.order-revisions
+.SS extractor.kemono.order-revisions
.IP "Type:" 6
\f[I]string\f[]
@@ -3876,7 +4076,7 @@ If the selected format is not available,
the first in the list gets chosen (usually mp3).
-.SS extractor.koharu.cbz
+.SS extractor.schalenetwork.cbz
.IP "Type:" 6
\f[I]bool\f[]
@@ -3890,7 +4090,7 @@ Disabling this option causes a gallery
to be downloaded as individual image files.
-.SS extractor.koharu.format
+.SS extractor.schalenetwork.format
.IP "Type:" 6
.br
* \f[I]string\f[]
@@ -3911,7 +4111,7 @@ Possible formats are
.br
-.SS extractor.koharu.tags
+.SS extractor.schalenetwork.tags
.IP "Type:" 6
\f[I]bool\f[]
@@ -4000,11 +4200,22 @@ to filter chapters by.
.SS extractor.mangadex.ratings
.IP "Type:" 6
-\f[I]list\f[] of \f[I]strings\f[]
+.br
+* \f[I]string\f[]
+.br
+* \f[I]list\f[] of \f[I]strings\f[]
.IP "Default:" 9
\f[I]["safe", "suggestive", "erotica", "pornographic"]\f[]
+.IP "Example:" 4
+.br
+* "safe"
+.br
+* "erotica,suggestive"
+.br
+* ["erotica", "suggestive"]
+
.IP "Description:" 4
List of acceptable content ratings for returned chapters.
@@ -4103,6 +4314,35 @@ Also emit metadata for text-only posts without media content.
Your access token, necessary to fetch favorited notes.
+.SS extractor.[misskey].include
+.IP "Type:" 6
+.br
+* \f[I]string\f[]
+.br
+* \f[I]list\f[] of \f[I]strings\f[]
+
+.IP "Default:" 9
+\f[I]"notes"\f[]
+
+.IP "Example:" 4
+.br
+* "avatar,background,notes"
+.br
+* ["avatar", "background", "notes"]
+
+.IP "Description:" 4
+A (comma-separated) list of subcategories to include
+when processing a user profile.
+
+Possible values are
+\f[I]"info"\f[],
+\f[I]"avatar"\f[],
+\f[I]"background"\f[],
+\f[I]"notes"\f[],
+
+It is possible to use \f[I]"all"\f[] instead of listing all values separately.
+
+
.SS extractor.[misskey].renotes
.IP "Type:" 6
\f[I]bool\f[]
@@ -4138,7 +4378,7 @@ Extract extended \f[I]pool\f[] metadata.
Note: Not supported by all \f[I]moebooru\f[] instances.
-.SS extractor.naver.videos
+.SS extractor.naver-blog.videos
.IP "Type:" 6
\f[I]bool\f[]
@@ -4149,6 +4389,17 @@ Note: Not supported by all \f[I]moebooru\f[] instances.
Download videos.
+.SS extractor.naver-chzzk.offset
+.IP "Type:" 6
+\f[I]integer\f[]
+
+.IP "Default:" 9
+\f[I]0\f[]
+
+.IP "Description:" 4
+Custom \f[I]offset\f[] starting value when paginating over comments.
+
+
.SS extractor.newgrounds.flash
.IP "Type:" 6
\f[I]bool\f[]
@@ -4345,6 +4596,33 @@ Extract additional metadata (\f[I]source\f[], \f[I]uploader\f[])
Note: This requires 1 additional HTTP request per post.
+.SS extractor.patreon.cursor
+.IP "Type:" 6
+.br
+* \f[I]bool\f[]
+.br
+* \f[I]string\f[]
+
+.IP "Default:" 9
+\f[I]true\f[]
+
+.IP "Example:" 4
+"03:eyJ2IjoxLCJjIjoiMzU0NDQ1MjAiLCJ0IjoiIn0=:DTcmjBoVj01o_492YBYqHhqx"
+
+.IP "Description:" 4
+Controls from which position to start the extraction process from.
+
+\f[I]true\f[]
+Start from the beginning.
+.br
+Log the most recent \f[I]cursor\f[] value when interrupted before reaching the end.
+.br
+\f[I]false\f[]
+Start from the beginning.
+any \f[I]string\f[]
+Start from the position defined by this value.
+
+
.SS extractor.patreon.files
.IP "Type:" 6
\f[I]list\f[] of \f[I]strings\f[]
@@ -4403,6 +4681,17 @@ Possible formats:
* \f[I]thumbnail_small\f[] (\f[I]"h":100,"w":100\f[])
+.SS extractor.patreon.user.date-max
+.IP "Type:" 6
+\f[I]Date\f[]
+
+.IP "Default:" 9
+\f[I]0\f[]
+
+.IP "Description:" 4
+Sets the \f[I]Date\f[] to start from.
+
+
.SS extractor.[philomena].api-key
.IP "Type:" 6
\f[I]string\f[]
@@ -4592,40 +4881,6 @@ by using a third-party tool like
\f[I]gppt\f[].
-.SS extractor.pixiv.novel.covers
-.IP "Type:" 6
-\f[I]bool\f[]
-
-.IP "Default:" 9
-\f[I]false\f[]
-
-.IP "Description:" 4
-Download cover images.
-
-
-.SS extractor.pixiv.novel.embeds
-.IP "Type:" 6
-\f[I]bool\f[]
-
-.IP "Default:" 9
-\f[I]false\f[]
-
-.IP "Description:" 4
-Download embedded images.
-
-
-.SS extractor.pixiv.novel.full-series
-.IP "Type:" 6
-\f[I]bool\f[]
-
-.IP "Default:" 9
-\f[I]false\f[]
-
-.IP "Description:" 4
-When downloading a novel being part of a series,
-download all novels of that series.
-
-
.SS extractor.pixiv.metadata
.IP "Type:" 6
\f[I]bool\f[]
@@ -4753,6 +5008,125 @@ A value of \f[I]0\f[] means no limit.
Try to fetch \f[I]limit_sanity_level\f[] works via web API.
+.SS extractor.pixiv-novel.comments
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+Fetch \f[I]comments\f[] metadata.
+
+Note: This requires 1 or more additional API requests per novel,
+depending on the number of comments.
+
+
+.SS extractor.pixiv-novel.covers
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+Download cover images.
+
+
+.SS extractor.pixiv-novel.embeds
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+Download embedded images.
+
+
+.SS extractor.pixiv-novel.full-series
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+When downloading a novel being part of a series,
+download all novels of that series.
+
+
+.SS extractor.pixiv-novel.max-posts
+.IP "Type:" 6
+\f[I]integer\f[]
+
+.IP "Default:" 9
+\f[I]0\f[]
+
+.IP "Description:" 4
+When downloading multiple novels,
+this sets the maximum number of novels to get.
+
+A value of \f[I]0\f[] means no limit.
+
+
+.SS extractor.pixiv-novel.metadata
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+Fetch extended \f[I]user\f[] metadata.
+
+
+.SS extractor.pixiv-novel.metadata-bookmark
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+For novels bookmarked by
+\f[I]your own account\f[],
+fetch bookmark tags as \f[I]tags_bookmark\f[] metadata.
+
+Note: This requires 1 additional API request per bookmarked post.
+
+
+.SS extractor.pixiv-novel.refresh-token
+.IP "Type:" 6
+\f[I]string\f[]
+
+.IP "Description:" 4
+The \f[I]refresh-token\f[] value you get
+from running \f[I]gallery-dl oauth:pixiv\f[] (see OAuth_) or
+by using a third-party tool like
+\f[I]gppt\f[].
+
+This can be the same value as \f[I]extractor.pixiv.refresh-token\f[]
+
+
+.SS extractor.pixiv-novel.tags
+.IP "Type:" 6
+\f[I]string\f[]
+
+.IP "Default:" 9
+\f[I]"japanese"\f[]
+
+.IP "Description:" 4
+Controls the \f[I]tags\f[] metadata field.
+
+.br
+* "japanese": List of Japanese tags
+.br
+* "translated": List of translated tags
+.br
+* "original": Unmodified list with both Japanese and translated tags
+
+
.SS extractor.plurk.comments
.IP "Type:" 6
\f[I]bool\f[]
@@ -5027,22 +5401,6 @@ Selects the file format to extract.
When more than one format is given, the first available one is selected.
-.SS extractor.sankaku.id-format
-.IP "Type:" 6
-\f[I]string\f[]
-
-.IP "Default:" 9
-\f[I]"numeric"\f[]
-
-.IP "Description:" 4
-Format of \f[I]id\f[] metadata fields.
-
-.br
-* \f[I]"alphanumeric"\f[] or \f[I]"alnum"\f[]: 11-character alphanumeric IDs (\f[I]y0abGlDOr2o\f[])
-.br
-* \f[I]"numeric"\f[] or \f[I]"legacy"\f[]: numeric IDs (\f[I]360451\f[])
-
-
.SS extractor.sankaku.refresh
.IP "Type:" 6
\f[I]bool\f[]
@@ -5117,6 +5475,17 @@ Download video embeds from external sites.
Download videos.
+.SS extractor.sexcom.gifs
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]true\f[]
+
+.IP "Description:" 4
+Download animated images as \f[I].gif\f[] instead of \f[I].webp\f[]
+
+
.SS extractor.skeb.article
.IP "Type:" 6
\f[I]bool\f[]
@@ -5500,13 +5869,13 @@ Download user avatars.
.SS extractor.tiktok.user.module
.IP "Type:" 6
-\f[I]string\f[]
+\f[I]Module\f[]
.IP "Default:" 9
\f[I]null\f[]
.IP "Description:" 4
-Name or filesystem path of the \f[I]ytdl\f[] Python module
+The \f[I]ytdl\f[] \f[I]Module\f[]
to extract posts from a \f[I]tiktok\f[] user profile with.
See \f[I]extractor.ytdl.module\f[].
@@ -5858,15 +6227,18 @@ Controls how to handle Cross Site Request Forgery (CSRF) tokens.
.IP "Description:" 4
Controls from which position to start the extraction process from.
+\f[I]true\f[]
+Start from the beginning.
.br
-* \f[I]true\f[]: Start from the beginning.
Log the most recent \f[I]cursor\f[] value when interrupted before reaching the end.
.br
-* \f[I]false\f[]: Start from the beginning.
-.br
-* any \f[I]string\f[]: Start from the position defined by this value.
+\f[I]false\f[]
+Start from the beginning.
+any \f[I]string\f[]
+Start from the position defined by this value.
-Note: A \f[I]cursor\f[] value from one timeline cannot be used with another.
+.IP "Note:" 4
+A \f[I]cursor\f[] value from one timeline cannot be used with another.
.SS extractor.twitter.expand
@@ -6448,6 +6820,30 @@ Use the given values as \f[I]type\f[] parameter for URLs with the specified exte
.br
+.SS extractor.webtoons.banners
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+Download the active comic's \f[I]banner\f[].
+
+
+.SS extractor.webtoons.thumbnails
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+Download the active episode's \f[I]thumbnail\f[].
+
+Useful for creating CBZ archives with actual source thumbnails.
+
+
.SS extractor.weibo.gifs
.IP "Type:" 6
.br
@@ -6593,6 +6989,17 @@ See
Location of a \f[I]ytdl\f[] configuration file to load options from.
+.SS extractor.ytdl.deprecations
+.IP "Type:" 6
+´´bool´´
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+Allow \f[I]ytdl\f[] to warn about deprecated options and features.
+
+
.SS extractor.ytdl.enabled
.IP "Type:" 6
\f[I]bool\f[]
@@ -6635,12 +7042,25 @@ See
\f[I]true\f[]
.IP "Description:" 4
-Enables the use of \f[I]ytdl's\f[] \f[I]generic\f[] extractor.
+Enables the use of \f[I]ytdl's\f[] \f[I]Generic\f[] extractor.
Set this option to \f[I]"force"\f[] for the same effect as
\f[I]--force-generic-extractor\f[].
+.SS extractor.ytdl.generic-category
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]true\f[]
+
+.IP "Description:" 4
+When using \f[I]ytdl's\f[] \f[I]Generic\f[] extractor,
+change category to \f[I]"ytdl-generic"\f[] and
+set subcategory to the input URL's domain.
+
+
.SS extractor.ytdl.logging
.IP "Type:" 6
\f[I]bool\f[]
@@ -6658,10 +7078,7 @@ Note: Set \f[I]quiet\f[] and \f[I]no_warnings\f[] in
.SS extractor.ytdl.module
.IP "Type:" 6
-.br
-* \f[I]string\f[]
-.br
-* \f[I]Path\f[]
+\f[I]Module\f[]
.IP "Default:" 9
\f[I]null\f[]
@@ -6673,7 +7090,7 @@ Note: Set \f[I]quiet\f[] and \f[I]no_warnings\f[] in
* "/home/user/.local/lib/python3.13/site-packages/youtube_dl"
.IP "Description:" 4
-Name or filesystem path of the \f[I]ytdl\f[] Python module to import.
+The \f[I]ytdl\f[] \f[I]Module\f[] to import.
Setting this to \f[I]null\f[] will try to import \f[I]"yt_dlp"\f[]
followed by \f[I]"youtube_dl"\f[] as fallback.
@@ -6692,7 +7109,6 @@ followed by \f[I]"youtube_dl"\f[] as fallback.
"merge_output_format": "mkv"
}
-
.IP "Description:" 4
Additional options passed directly to the \f[I]YoutubeDL\f[] constructor.
@@ -6936,13 +7352,23 @@ Set this option to \f[I]null\f[] to disable this indicator.
.SS downloader.*.rate
.IP "Type:" 6
-\f[I]string\f[]
+.br
+* \f[I]string\f[]
+.br
+* \f[I]list\f[] with 2 \f[I]strings\f[]
.IP "Default:" 9
\f[I]null\f[]
.IP "Example:" 4
-"32000", "500k", "2.5M"
+.br
+* "32000"
+.br
+* "500k"
+.br
+* "1M - 2.5M"
+.br
+* ["1M", "2.5M"]
.IP "Description:" 4
Maximum download rate in bytes per second.
@@ -6951,6 +7377,10 @@ Possible values are valid integer or floating-point numbers
optionally followed by one of \f[I]k\f[], \f[I]m\f[]. \f[I]g\f[], \f[I]t\f[], or \f[I]p\f[].
These suffixes are case-insensitive.
+If given as a range, the maximum download rate
+will be randomly chosen before each download.
+(see \f[I]random.randint()\f[])
+
.SS downloader.*.retries
.IP "Type:" 6
@@ -7123,6 +7553,21 @@ Fail a download when a file does not pass
instead of downloading a potentially broken file.
+.SS downloader.http.validate-html
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]true\f[]
+
+.IP "Description:" 4
+Check for unexpected HTML responses.
+
+Fail file downloads with a \f[I]text/html\f[]
+\f[I]Content-Type header\f[]
+when expecting a media file instead.
+
+
.SS downloader.ytdl.cmdline-args
.IP "Type:" 6
.br
@@ -7156,6 +7601,17 @@ See
Location of a \f[I]ytdl\f[] configuration file to load options from.
+.SS downloader.ytdl.deprecations
+.IP "Type:" 6
+´´bool´´
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+Allow \f[I]ytdl\f[] to warn about deprecated options and features.
+
+
.SS downloader.ytdl.format
.IP "Type:" 6
\f[I]string\f[]
@@ -7204,10 +7660,7 @@ Note: Set \f[I]quiet\f[] and \f[I]no_warnings\f[] in
.SS downloader.ytdl.module
.IP "Type:" 6
-.br
-* \f[I]string\f[]
-.br
-* \f[I]Path\f[]
+\f[I]Module\f[]
.IP "Default:" 9
\f[I]null\f[]
@@ -7219,7 +7672,7 @@ Note: Set \f[I]quiet\f[] and \f[I]no_warnings\f[] in
* "/home/user/.local/lib/python3.13/site-packages/youtube_dl"
.IP "Description:" 4
-Name or filesystem path of the \f[I]ytdl\f[] Python module to import.
+The \f[I]ytdl\f[] \f[I]Module\f[] to import.
Setting this to \f[I]null\f[] will try to import \f[I]"yt_dlp"\f[]
followed by \f[I]"youtube_dl"\f[] as fallback.
@@ -7301,8 +7754,8 @@ Controls the output string format and status indicators.
.br
* \f[I]"color"\f[]: Suitable for terminals that understand ANSI escape codes and colors
.br
-* \f[I]"auto"\f[]: \f[I]"terminal"\f[] on Windows with \f[I]output.ansi\f[] disabled,
-\f[I]"color"\f[] otherwise.
+* \f[I]"auto"\f[]: \f[I]"pipe"\f[] if not on a TTY, \f[I]"terminal"\f[] on Windows with
+\f[I]output.ansi\f[] disabled, \f[I]"color"\f[] otherwise.
It is possible to use custom output format strings
.br
@@ -7759,6 +8212,26 @@ the files' metadata as well as \f[I]{_path}\f[], \f[I]{_directory}\f[],
and \f[I]{_filename}\f[].
+.SS exec.commands
+.IP "Type:" 6
+\f[I]list\f[] of \f[I]commands\f[]
+
+.IP "Example:" 4
+.. code:: json
+
+[
+["echo", "{user[account]}", "{id}"]
+["magick", "convert" "{_path}", "\\fF {_path.rpartition('.')[0]}.png"],
+"rm {}",
+]
+
+.IP "Description:" 4
+Multiple \f[I]commands\f[] to run in succession.
+
+All \f[I]commands\f[] after the first returning with a non-zero
+exit status will not be run.
+
+
.SS exec.event
.IP "Type:" 6
.br
@@ -7775,6 +8248,27 @@ The event(s) for which \f[I]exec.command\f[] is run.
See \f[I]metadata.event\f[] for a list of available events.
+.SS exec.session
+.IP "Type:" 6
+\f[I]bool\f[]
+
+.IP "Default:" 9
+\f[I]false\f[]
+
+.IP "Description:" 4
+Start subprocesses in a new session.
+
+On Windows, this means passing
+\f[I]CREATE_NEW_PROCESS_GROUP\f[]
+as a \f[I]creationflags\f[] argument to
+\f[I]subprocess.Popen\f[]
+
+On POSIX systems, this means enabling the
+\f[I]start_new_session\f[] argument of
+\f[I]subprocess.Popen\f[]
+to have it call \f[I]setsid()\f[].
+
+
.SS hash.chunk-size
.IP "Type:" 6
\f[I]integer\f[]
@@ -8385,16 +8879,18 @@ See \f[I]metadata.event\f[] for a list of available events.
.br
* "my_module:generate_text"
.br
-* "~/.local/share/gdl-utils.py:resize"
+* "~/.local/share/gdl_utils.py:resize"
.IP "Description:" 4
The Python function to call.
-This function is specified as \f[I]<module>:<function name>\f[]
-and gets called with the current metadata dict as argument.
+This function is specified as \f[I]<module>:<function name>\f[], where
+.br
+\f[I]<module>\f[] is a \f[I]Module\f[] and
+.br
+\f[I]<function name>\f[] is the name of the function in that module.
-\f[I]module\f[] is either an importable Python module name
-or the \f[I]Path\f[] to a .py file,
+It gets called with the current metadata dict as argument.
.SS rename.from
@@ -8745,29 +9241,133 @@ Note: \f[I]null\f[] references internal extractors defined in
or by \f[I]extractor.modules\f[].
-.SS globals
+.SS extractor.category-map
.IP "Type:" 6
.br
-* \f[I]Path\f[]
+* \f[I]object\f[] (category -> category)
.br
* \f[I]string\f[]
.IP "Example:" 4
-.br
-* "~/.local/share/gdl-globals.py"
-.br
-* "gdl-globals"
+.. code:: json
+
+{
+"danbooru": "booru",
+"gelbooru": "booru"
+}
.IP "Description:" 4
-Path to or name of an
-.br
-\f[I]importable\f[]
-Python module,
-whose namespace,
+A JSON object mapping category names to their replacements.
+
+Special values:
+
.br
+* \f[I]"compat"\f[]
+.. code:: json
+
+{
+"coomer" : "coomerparty",
+"kemono" : "kemonoparty",
+"schalenetwork": "koharu",
+"naver-chzzk" : "chzzk",
+"naver-blog" : "naver",
+"naver-webtoon": "naverwebtoon",
+"pixiv-novel" : "pixiv",
+"pixiv-novel:novel" : ["pixiv", "novel"],
+"pixiv-novel:user" : ["pixiv", "novel-user"],
+"pixiv-novel:series" : ["pixiv", "novel-series"],
+"pixiv-novel:bookmark": ["pixiv", "novel-bookmark"]
+}
+
+
+.SS extractor.config-map
+.IP "Type:" 6
+\f[I]object\f[] (category -> category)
+
+.IP "Default:" 9
+.. code:: json
+
+{
+"coomerparty" : "coomer",
+"kemonoparty" : "kemono",
+"koharu" : "schalenetwork",
+"chzzk" : "naver-chzzk",
+"naver" : "naver-blog",
+"naverwebtoon": "naver-webtoon",
+"pixiv" : "pixiv-novel"
+}
+
+.IP "Description:" 4
+Duplicate the configuration settings of extractor categories
+to other names.
+
+For example, a \f[I]"naver": "naver-blog"\f[] key-value pair will make all
+\f[I]naver\f[] config settings available for ´´naver-blog´´ extractors as well.
+
+
+.SS jinja.environment
+.IP "Type:" 6
+\f[I]object\f[] (name -> value)
+
+.IP "Example:" 4
+.. code:: json
+
+{
+"variable_start_string": "(((",
+"variable_end_string" : ")))",
+"keep_trailing_newline": true
+}
+
+.IP "Description:" 4
+Initialization parameters for the \f[I]jinja\f[]
+\f[I]Environment\f[]
+object.
+
+
+.SS jinja.policies
+.IP "Type:" 6
+\f[I]object\f[] (name -> value)
+
+.IP "Example:" 4
+.. code:: json
+
+{
+"urlize.rel": "nofollow noopener",
+"ext.i18n.trimmed": true
+}
+
+.IP "Description:" 4
+\f[I]jinja\f[]
+\f[I]Policies\f[]
+
+
+.SS jinja.filters
+.IP "Type:" 6
+\f[I]Module\f[]
+
+.IP "Description:" 4
+A Python \f[I]Module\f[] containing custom \f[I]jinja\f[]
+\f[I]filters\f[]
+
+
+.SS jinja.tests
+.IP "Type:" 6
+\f[I]Module\f[]
+
+.IP "Description:" 4
+A Python \f[I]Module\f[] containing custom \f[I]jinja\f[]
+\f[I]tests\f[]
+
+
+.SS globals
+.IP "Type:" 6
+\f[I]Module\f[]
+
+.IP "Description:" 4
+A Python \f[I]Module\f[] whose namespace,
in addition to the \f[I]GLOBALS\f[] dict in
\f[I]util.py\f[],
-gets used as \f[I]globals parameter\f[] for compiled Python expressions.
+is used as \f[I]globals parameter\f[] for compiled Python expressions.
.SS cache.file
@@ -8851,6 +9451,28 @@ The list of signal names to ignore, i.e. set
as signal handler for.
+.SS signals-actions
+.IP "Type:" 6
+\f[I]object\f[] (signal -> \f[I]Action(s)\f[])
+
+.IP "Example:" 4
+.. code:: json
+
+{
+"SIGINT" : "flag download = stop",
+"SIGUSR1": [
+"print Received SIGUSR1",
+"exec notify.sh",
+"exit 127"
+]
+}
+
+.IP "Description:" 4
+\f[I]Action(s)\f[] to perform when a
+\f[I]signal\f[]
+is received.
+
+
.SS subconfigs
.IP "Type:" 6
\f[I]list\f[] of \f[I]Path\f[]
@@ -9089,6 +9711,42 @@ it will be randomly chosen with uniform distribution such that \f[I]a <= N <= b\
value (\f[I]"2.85"\f[]) or a range (\f[I]"1.5-3.0"\f[]).
+.SS Module
+.IP "Type:" 6
+.br
+* \f[I]string\f[]
+.br
+* \f[I]Path\f[]
+
+.IP "Example:" 4
+.br
+* "gdl_utils"
+.br
+* "~/.local/share/gdl/"
+.br
+* "~/.local/share/gdl_utils.py"
+
+.IP "Description:" 4
+A Python
+\f[I]Module\f[]
+
+This can be one of
+
+.br
+* the name of an
+\f[I]importable\f[]
+Python module
+.br
+* the \f[I]Path\f[] to a Python
+\f[I]package\f[]
+.br
+* the \f[I]Path\f[] to a .py file
+
+See
+\f[I]Python/Modules\f[]
+for details.
+
+
.SS Path
.IP "Type:" 6
.br
@@ -9114,12 +9772,22 @@ Simple \f[I]tilde expansion\f[]
and \f[I]environment variable expansion\f[]
is supported.
-In Windows environments, backslashes (\f[I]"\\"\f[]) can, in addition to
-forward slashes (\f[I]"/"\f[]), be used as path separators.
-Because backslashes are JSON's escape character,
-they themselves have to be escaped.
-The path \f[I]C:\\path\\to\\file.ext\f[] has therefore to be written as
-\f[I]"C:\\\\path\\\\to\\\\file.ext"\f[] if you want to use backslashes.
+.IP "Note::" 4
+In Windows environments,
+both backslashes \f[I]\\\f[] as well as forward slashes \f[I]/\f[]
+can be used as path separators.
+
+However, since backslashes are JSON's escape character,
+they themselves must be escaped as \f[I]\\\\\f[].
+
+For example, a path like \f[I]C:\\path\\to\\file.ext\f[] has to be specified as
+
+.br
+* \f[I]"C:\\\\path\\\\to\\\\file.ext"\f[] when using backslashes
+.br
+* \f[I]"C:/path/to/file.ext"\f[] when using forward slashes
+
+in a JSON file.
.SS Logging Configuration
@@ -9265,6 +9933,81 @@ Convert Pixiv Ugoira to WebM using \f[I]ffmpeg\f[]
Store files in a ZIP archive
+.SS Action
+.IP "Type:" 6
+\f[I]string\f[]
+
+.IP "Example:" 4
+.br
+* "exit"
+.br
+* "print Hello World"
+.br
+* "raise AbortExtraction an error occured"
+.br
+* "flag file = terminate"
+
+.IP "Description:" 4
+An \f[I]Action\f[] is parsed as Action Type
+followed by (optional) arguments.
+
+It is possible to specify more than one \f[I]action\f[]
+by providing them as a \f[I]list\f[]: \f[I]["<action1>", "<action2>", …]\f[]
+
+Supported Action Types:
+
+\f[I]status\f[]:
+Modify job exit status.
+.br
+Expected syntax is \f[I]<operator> <value>\f[] (e.g. \f[I]= 100\f[]).
+.br
+
+Supported operators are
+\f[I]=\f[] (assignment),
+\f[I]&\f[] (bitwise AND),
+\f[I]|\f[] (bitwise OR),
+\f[I]^\f[] (bitwise XOR).
+\f[I]level\f[]:
+Modify severity level of the current logging message.
+.br
+Can be one of \f[I]debug\f[], \f[I]info\f[], \f[I]warning\f[], \f[I]error\f[] or an integer value.
+.br
+\f[I]print\f[]:
+Write argument to stdout.
+\f[I]exec\f[]:
+Run a shell command.
+\f[I]abort\f[]:
+Stop the current extractor run.
+\f[I]terminate\f[]:
+Stop the current extractor run, including parent extractors.
+\f[I]restart\f[]:
+Restart the current extractor run.
+\f[I]raise\f[]:
+Raise an exception.
+
+This can be an exception defined in
+\f[I]exception.py\f[]
+or a
+\f[I]built-in exception\f[]
+(e.g. \f[I]ZeroDivisionError\f[])
+\f[I]flag\f[]:
+Set a \f[I]flag\f[].
+
+Expected syntax is \f[I]<flag>[ = <value>]\f[] (e.g. \f[I]post = stop\f[])
+.br
+\f[I]<flag>\f[] can be one of \f[I]file\f[], \f[I]post\f[], \f[I]child\f[], \f[I]download\f[]
+.br
+\f[I]<value>\f[] can be one of \f[I]stop\f[], \f[I]abort\f[], \f[I]terminate\f[], \f[I]restart\f[] (default \f[I]stop\f[])
+.br
+\f[I]wait\f[]:
+Sleep for a given \f[I]Duration\f[] or
+.br
+wait until Enter is pressed when no argument was given.
+.br
+\f[I]exit\f[]:
+Exit the program with the given argument as exit status.
+
+
.SH BUGS
https://github.com/mikf/gallery-dl/issues