diff options
Diffstat (limited to 'data/man')
| -rw-r--r-- | data/man/gallery-dl.1 | 22 | ||||
| -rw-r--r-- | data/man/gallery-dl.conf.5 | 1147 |
2 files changed, 962 insertions, 207 deletions
diff --git a/data/man/gallery-dl.1 b/data/man/gallery-dl.1 index 77403b1..4979279 100644 --- a/data/man/gallery-dl.1 +++ b/data/man/gallery-dl.1 @@ -1,4 +1,4 @@ -.TH "GALLERY-DL" "1" "2025-05-23" "1.29.7" "gallery-dl Manual" +.TH "GALLERY-DL" "1" "2025-07-27" "1.30.2" "gallery-dl Manual" .\" disable hyphenation .nh @@ -41,6 +41,9 @@ User-Agent request header .B "\-\-clear\-cache" \f[I]MODULE\f[] Delete cached login sessions, cookies, etc. for MODULE (ALL to delete everything) .TP +.B "\-\-compat" +Restore legacy 'category' names +.TP .B "\-U, \-\-update\-check" Check if a newer version is available .TP @@ -90,10 +93,16 @@ Print a list of available keywords and example values for the given URLs Add input URLs which returned an error to FILE .TP .B "\-N, \-\-print" \f[I][EVENT:]FORMAT\f[] -Write FORMAT during EVENT (default 'prepare') to standard output. Examples: 'id' or 'post:{md5[:8]}' +Write FORMAT during EVENT (default 'prepare') to standard output instead of downloading files. Can be used multiple times. Examples: 'id' or 'post:{md5[:8]}' +.TP +.B "\-\-Print" \f[I][EVENT:]FORMAT\f[] +Like --print, but downloads files as well .TP .B "\-\-print\-to\-file" \f[I][EVENT:]FORMAT FILE\f[] -Append FORMAT during EVENT to FILE +Append FORMAT during EVENT to FILE instead of downloading files. Can be used multiple times +.TP +.B "\-\-Print\-to\-file" \f[I][EVENT:]FORMAT FILE\f[] +Like --print-to-file, but downloads files as well .TP .B "\-\-list\-modules" Print a list of available extractor modules @@ -138,7 +147,7 @@ Make all connections via IPv6 Disable HTTPS certificate validation .TP .B "\-r, \-\-limit\-rate" \f[I]RATE\f[] -Maximum download rate (e.g. 500k or 2.5M) +Maximum download rate (e.g. 500k, 2.5M, or 800k-2M) .TP .B "\-\-chunk\-size" \f[I]SIZE\f[] Size of in-memory data chunks (default: 32k) @@ -149,6 +158,9 @@ Number of seconds to wait before each download. This can be either a constant va .B "\-\-sleep\-request" \f[I]SECONDS\f[] Number of seconds to wait between HTTP requests during data extraction .TP +.B "\-\-sleep\-429" \f[I]SECONDS\f[] +Number of seconds to wait when receiving a '429 Too Many Requests' response +.TP .B "\-\-sleep\-extractor" \f[I]SECONDS\f[] Number of seconds to wait before starting data extraction for an input URL .TP @@ -219,7 +231,7 @@ Do not download files smaller than SIZE (e.g. 500k or 2.5M) Do not download files larger than SIZE (e.g. 500k or 2.5M) .TP .B "\-\-download\-archive" \f[I]FILE\f[] -Record all downloaded or skipped files in FILE and skip downloading any file already in it +Record successfully downloaded files in FILE and skip downloading any file already in it .TP .B "\-\-range" \f[I]RANGE\f[] Index range(s) specifying which files to download. These can be either a constant value, range, or slice (e.g. '5', '8-20', or '1:24:3') 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 |
