You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gallery-dl/docs/gallery-dl-example.conf

450 lines
14 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{
"extractor":
{
"base-directory": "~/gallery-dl/",
"#": "set global archive file for all extractors",
"archive": "~/gallery-dl/archive.sqlite3",
"archive-pragma": ["journal_mode=WAL", "synchronous=NORMAL"],
"#": "add two custom keywords into the metadata dictionary",
"#": "these can be used to further refine your output directories or filenames",
"keywords": {"bkey": "", "ckey": ""},
"#": "make sure that custom keywords are empty, i.e. they don't appear unless specified by the user",
"keywords-default": "",
"#": "replace invalid path characters with unicode alternatives",
"path-restrict": {
"\\": "",
"/" : "",
"|" : "",
":" : "",
"*" : "",
"?" : "",
"\"": "″",
"<" : "﹤",
">" : "﹥"
},
"#": "write tags for several *booru sites",
"postprocessors": [
{
"name": "metadata",
"mode": "tags",
"whitelist": ["danbooru", "moebooru", "sankaku"]
}
],
"pixiv":
{
"#": "override global archive path for pixiv",
"archive": "~/gallery-dl/archive-pixiv.sqlite3",
"#": "set custom directory and filename format strings for all pixiv downloads",
"filename": "{id}{num}.{extension}",
"directory": ["Pixiv", "Works", "{user[id]}"],
"refresh-token": "aBcDeFgHiJkLmNoPqRsTuVwXyZ01234567890-FedC9",
"#": "transform ugoira into lossless MKVs",
"ugoira": true,
"postprocessors": ["ugoira-copy"],
"#": "use special settings for favorites and bookmarks",
"favorite":
{
"directory": ["Pixiv", "Favorites", "{user[id]}"]
},
"bookmark":
{
"directory": ["Pixiv", "My Bookmarks"],
"refresh-token": "01234567890aBcDeFgHiJkLmNoPqRsTuVwXyZ-ZyxW1"
}
},
"danbooru":
{
"ugoira": true,
"postprocessors": ["ugoira-webm"]
},
"exhentai":
{
"#": "use cookies instead of logging in with username and password",
"cookies":
{
"ipb_member_id": "12345",
"ipb_pass_hash": "1234567890abcdef",
"igneous" : "123456789",
"hath_perks" : "m1.m2.m3.a-123456789a",
"sk" : "n4m34tv3574m2c4e22c35zgeehiw",
"sl" : "dm_2"
},
"#": "wait 2 to 4.8 seconds between HTTP requests",
"sleep-request": [2.0, 4.8],
"filename": "{num:>04}_{name}.{extension}",
"directory": ["{category!c}", "{title}"]
},
"sankaku":
{
"#": "authentication with cookies is not possible for sankaku",
"username": "user",
"password": "#secret#"
},
"furaffinity": {
"#": "authentication with username and password is not possible due to CAPTCHA",
"cookies": {
"a": "01234567-89ab-cdef-fedc-ba9876543210",
"b": "fedcba98-7654-3210-0123-456789abcdef"
},
"descriptions": "html",
"postprocessors": ["content"]
},
"deviantart":
{
"#": "download 'gallery' and 'scraps' images for user profile URLs",
"include": "gallery,scraps",
"#": "use custom API credentials to avoid 429 errors",
"client-id": "98765",
"client-secret": "0123456789abcdef0123456789abcdef",
"refresh-token": "0123456789abcdef0123456789abcdef01234567",
"#": "put description texts into a separate directory",
"metadata": true,
"postprocessors": [
{
"name": "metadata",
"mode": "custom",
"directory" : "Descriptions",
"content-format" : "{description}\n",
"extension-format": "descr.txt"
}
]
},
"kemonoparty": {
"postprocessors": [
{
"name": "metadata",
"event": "post",
"filename": "{id} {title}.txt",
"#": "write text content and external URLs",
"mode": "custom",
"format": "{content}\n{embed[url]:?/\n/}",
"#": "onlx write file if there is an external link present",
"filter": "embed.get('url') or re.search(r'(?i)(gigafile|xgf|1drv|mediafire|mega|google|drive)', content)"
}
]
},
"flickr":
{
"access-token": "1234567890-abcdef",
"access-token-secret": "1234567890abcdef",
"size-max": 1920
},
"mangadex":
{
"#": "only download safe/suggestive chapters translated to English",
"lang": "en",
"ratings": ["safe", "suggestive"],
"#": "put chapters into '.cbz' archives",
"postprocessors": ["cbz"]
},
"reddit":
{
"#": "only spawn child extractors for links to specific sites",
"whitelist": ["imgur", "redgifs"],
"#": "put files from child extractors into the reddit directory",
"parent-directory": true,
"#": "transfer metadata to any child extractor as '_reddit'",
"parent-metadata": "_reddit"
},
"imgur":
{
"#": "general imgur settings",
"filename": "{id}.{extension}"
},
"reddit>imgur":
{
"#": "special settings for imgur URLs found in reddit posts",
"directory": [],
"filename": "{_reddit[id]} {_reddit[title]} {id}.{extension}"
},
"tumblr":
{
"posts" : "all",
"external": false,
"reblogs" : false,
"inline" : true,
"#": "use special settings when downloading liked posts",
"likes":
{
"posts" : "video,photo,link",
"external": true,
"reblogs" : true
}
},
"twitter":
{
"#": "write text content for *all* tweets",
"postprocessors": ["content"],
"text-tweets": true
},
"ytdl":
{
"#": "enable 'ytdl' extractor",
"#": "i.e. invoke ytdl on all otherwise unsupported input URLs",
"enabled": true,
"#": "use yt-dlp instead of youtube-dl",
"module": "yt_dlp",
"#": "load ytdl options from config file",
"config-file": "~/yt-dlp.conf"
},
"mastodon":
{
"#": "add 'tabletop.social' as recognized mastodon instance",
"#": "(run 'gallery-dl oauth:mastodon:tabletop.social to get an access token')",
"tabletop.social":
{
"root": "https://tabletop.social",
"access-token": "513a36c6..."
},
"#": "set filename format strings for all 'mastodon' instances",
"directory": ["mastodon", "{instance}", "{account[username]!l}"],
"filename" : "{id}_{media[id]}.{extension}"
},
"foolslide": {
"#": "add two more foolslide instances",
"otscans" : {"root": "https://otscans.com/foolslide"},
"helvetica": {"root": "https://helveticascans.com/r" }
},
"foolfuuka": {
"#": "add two other foolfuuka 4chan archives",
"fireden-onion": {"root": "http://ydt6jy2ng3s3xg2e.onion"},
"scalearchive" : {"root": "https://archive.scaled.team" }
},
"gelbooru_v01":
{
"#": "add a custom gelbooru_v01 instance",
"#": "this is just an example, this specific instance is already included!",
"allgirlbooru": {"root": "https://allgirl.booru.org"},
"#": "the following options are used for all gelbooru_v01 instances",
"tag":
{
"directory": {
"locals().get('bkey')": ["Booru", "AllGirlBooru", "Tags", "{bkey}", "{ckey}", "{search_tags}"],
"" : ["Booru", "AllGirlBooru", "Tags", "_Unsorted", "{search_tags}"]
}
},
"post":
{
"directory": ["Booru", "AllGirlBooru", "Posts"]
},
"archive": "~/gallery-dl/custom-archive-file-for-gelbooru_v01_instances.db",
"filename": "{tags}_{id}_{md5}.{extension}",
"sleep-request": [0, 1.2]
},
"gelbooru_v02":
{
"#": "add a custom gelbooru_v02 instance",
"#": "this is just an example, this specific instance is already included!",
"tbib":
{
"root": "https://tbib.org",
"#": "some sites have different domains for API access",
"#": "use the 'api_root' option in addition to the 'root' setting here"
}
},
"tbib": {
"#": "the following options are only used for TBIB",
"#": "gelbooru_v02 has four subcategories at the moment, use custom directory settings for all of these",
"tag":
{
"directory": {
"locals().get('bkey')": ["Other Boorus", "TBIB", "Tags", "{bkey}", "{ckey}", "{search_tags}"],
"" : ["Other Boorus", "TBIB", "Tags", "_Unsorted", "{search_tags}"]
}
},
"pool":
{
"directory": {
"locals().get('bkey')": ["Other Boorus", "TBIB", "Pools", "{bkey}", "{ckey}", "{pool}"],
"" : ["Other Boorus", "TBIB", "Pools", "_Unsorted", "{pool}"]
}
},
"favorite":
{
"directory": {
"locals().get('bkey')": ["Other Boorus", "TBIB", "Favorites", "{bkey}", "{ckey}", "{favorite_id}"],
"" : ["Other Boorus", "TBIB", "Favorites", "_Unsorted", "{favorite_id}"]
}
},
"post":
{
"directory": ["Other Boorus", "TBIB", "Posts"]
},
"archive": "~/gallery-dl/custom-archive-file-for-TBIB.db",
"filename": "{id}_{md5}.{extension}",
"sleep-request": [0, 1.2]
},
"urlshortener": {
"tinyurl": {"root": "https://tinyurl.com"}
}
},
"downloader":
{
"#": "restrict download speed to 1 MB/s",
"rate": "1M",
"#": "show download progress indicator after 2 seconds",
"progress": 2.0,
"#": "retry failed downloads up to 3 times",
"retries": 3,
"#": "consider a download 'failed' after 8 seconds of inactivity",
"timeout": 8.0,
"#": "write '.part' files into a special directory",
"part-directory": "/tmp/.download/",
"#": "do not update file modification times",
"mtime": false,
"ytdl":
{
"#": "use yt-dlp instead of youtube-dl",
"module": "yt_dlp"
}
},
"output":
{
"log": {
"level": "info",
"#": "use different ANSI colors for each log level",
"format": {
"debug" : "\u001b[0;37m{name}: {message}\u001b[0m",
"info" : "\u001b[1;37m{name}: {message}\u001b[0m",
"warning": "\u001b[1;33m{name}: {message}\u001b[0m",
"error" : "\u001b[1;31m{name}: {message}\u001b[0m"
}
},
"#": "shorten filenames to fit into one terminal line",
"#": "while also considering wider East-Asian characters",
"shorten": "eaw",
"#": "enable ANSI escape sequences on Windows",
"ansi": true,
"#": "write logging messages to a separate file",
"logfile": {
"path": "~/gallery-dl/log.txt",
"mode": "w",
"level": "debug"
},
"#": "write unrecognized URLs to a separate file",
"unsupportedfile": {
"path": "~/gallery-dl/unsupported.txt",
"mode": "a",
"format": "{asctime} {message}",
"format-date": "%Y-%m-%d-%H-%M-%S"
}
},
"postprocessor":
{
"#": "write 'content' metadata into separate files",
"content":
{
"name" : "metadata",
"#": "write data for every post instead of each individual file",
"event": "post",
"filename": "{post_id|tweet_id|id}.txt",
"#": "write only the values for 'content' or 'description'",
"mode" : "custom",
"format": "{content|description}\n"
},
"#": "put files into a '.cbz' archive",
"cbz":
{
"name": "zip",
"extension": "cbz"
},
"#": "various ugoira post processor configurations to create different file formats",
"ugoira-webm":
{
"name": "ugoira",
"extension": "webm",
"ffmpeg-args": ["-c:v", "libvpx-vp9", "-an", "-b:v", "0", "-crf", "30"],
"ffmpeg-twopass": true,
"ffmpeg-demuxer": "image2"
},
"ugoira-mp4":
{
"name": "ugoira",
"extension": "mp4",
"ffmpeg-args": ["-c:v", "libx264", "-an", "-b:v", "4M", "-preset", "veryslow"],
"ffmpeg-twopass": true,
"libx264-prevent-odd": true
},
"ugoira-gif":
{
"name": "ugoira",
"extension": "gif",
"ffmpeg-args": ["-filter_complex", "[0:v] split [a][b];[a] palettegen [p];[b][p] paletteuse"]
},
"ugoira-copy": {
"name": "ugoira",
"extension": "mkv",
"ffmpeg-args": ["-c", "copy"],
"libx264-prevent-odd": false,
"repeat-last-frame": false
}
},
"#": "use a custom cache file location",
"cache": {
"file": "~/gallery-dl/cache.sqlite3"
}
}