Skip to content

Release history

gallery-dl releases

Command-line program to download image galleries and collections from several image hosting sites

All releases

24 shown

v1.32.1 Breaking risk
⚠ Upgrade required
  • Pull updates from Codeberg for versions >= 1.32.0 (migration path per issue #9473).
Breaking changes
  • Removed extractor module `comick`.
  • Removed extractor module `weebdex`.
Notable features
  • Added Aryion extractor for watched users (`messagepage`).
  • Added Framedsc support.
  • Implemented Exhentai `source: torrent` extraction.
Full changelog

Active development has moved to Codeberg
(see [Announcement] Moving to Codeberg for details)

https://codeberg.org/mikf/gallery-dl/releases/tag/v1.32.1


Extractors

  • Additions
    • [aryion] add extractor for watched users (cb#71)
    • [framedsc] add support (pr#58 gh#9192)
  • Removals
    • [comick] remove module
    • [weebdex] remove module
  • aryion
    • rename watch extractor to messagepage
  • blogger
  • deviantart
    • improve CAPTCHA detection during login (gh#9351 cb#9)
  • discord
    • cache server API results (cb#57)
    • process server channels as children (cb#57)
  • exhentai
  • facebook
    • handle negative fallback-retries values
    • increase loop detection threshold (gh#9495)
  • furaffinity
    • fix download URL extraction (gh#9494)
  • imxto
  • instagram
    • add pinned option (gh#9492)
    • restore "posts are private" warning (gh#9291)
    • support audio from clips_metadata (gh#9477)
    • support downloading audio from dash_manifest data
    • unset wd cookie (gh#8300 cb#73)
  • nitter
    • add fallback-retries option (cb#59)
    • use request_location() for user ID lookups
  • philomena
  • pixiv
    • fix & update search extractor (gh#9469)
  • reddit
  • scrolller
    • fix user GraphQL query
  • telegraph
    • extract full article html & links metadata (gh#9468)
  • twibooru
  • twitter
    • fix AttributeError when extended user metadata fetch fails (pr#76)
  • vipergirls
    • support proxy domains (cb#43)
  • warosu
  • weibo
    • fix KeyError: 'title' (cb#47)

Documentation

  • replace more GitHub links

Output

  • add units option (cb#56)

Scripts

  • release
    • include requirements directory
  • rm
    • delete extractor/utils files

Update

Utilities

  • job
    • run filter before date & tags predicates (gh#9492)
  • text
    • implement iextr()
  • util
    • implement format_bytes_binary()
v1.32.0 Breaking risk
Breaking changes
  • Removed `date-format` option; ISO 8601 format is now enforced.
Notable features
  • Basic server/IPC queue implementation
  • Added `date-before` and `date-after` filtering options
  • Implemented tag blacklist/whitelist (`tags-blacklist`, `tags-whitelist`) support across many extractors
Full changelog

Active development has moved to Codeberg
(see [Announcement] Moving to Codeberg for details)

https://codeberg.org/mikf/gallery-dl/releases/tag/v1.32.0


Core

  • implement basic server/IPC queue (pr#9338)
  • implement date-before/-after options (gh#1167 gh#1389 gh#2308)
  • implement tags-blacklist/-whitelist options (gh#2446 gh#3755 gh#4240 gh#4248 gh#4270 gh#4272 gh#4387 gh#5208 gh#6267 gh#6845 gh#7324 gh#7910)
  • implement follow option (gh#8752)
  • implement path-restricted archive paths (gh#3359 gh#3361 gh#4100 gh#8027)
  • implement linear/exponential backoff for sleep-429
  • implement lazy-loading of larger extractor resources like GraphQL queries and HTML generation functionality
  • refactor internal caching mechanisms
  • rename image-* & chapter-* options to file-* & child-*
  • enable metadata-url/-path/-parent/-extractor by default
  • remove date-format option - use ISO 8601 format instead
  • report errors when using removed/deprecated options (gh#9163)
  • fix preserving (private) metadata in cached values (gh#9375)

Extractors

common

  • add common headers to request_json() requests
  • add reference to exception module to Extractor class
  • fix "browser": "…/VERSION" parsing (gh#9401)
  • improve __NEXT_DATA__ extraction (gh#9420 gh#9435 gh#9447 cb#23 cb#30)
  • include duration in wait() output
  • exclude alt URLs from include=all

8muses

  • use dynamic directories by default

allporncomic

aryion

  • improve error message on login failure (gh#9429)
  • use text.filename_from_contentdisposition

bellazon

  • ignore /main/style_emoticons/ URLs (gh#9140)

bluesky

  • support submitting sign-in code during login (gh#9367)

bunkr

  • add direct-link extractor (cb#27)

chevereto

  • combine image & video extractors into a file extractor
  • improve password requirement detection
  • support putmega.com (gh#2045 gh#9361)

cien

  • support downloading article cover images

civitai

comicartfans

  • add support (gh#4524)
  • implement child-range skip

coomer

  • improve default file order (gh#9097)

cosmos

  • add support (gh#9358)
  • fix KeyError: 'multipleMedia' (gh#9358)
  • update default image format
  • support specifying a user ID with id:...

cosplayrule34

cyberdrop

danbooru

  • implement tags-blacklist import (gh#5208)

deviantart

  • emit log messages when requesting download URL (gh#9217)
  • export journal templates & tiptap functions
  • fix login with username & password (gh#9351)
  • fix possible KeyError: 'extension' (gh#9339)
  • fix TypeError when auto-unwatch is enabled (gh#9182)
  • fix "refresh-token": "cache" (gh#9217 gh#9268)
  • implement code_challenge flow for oauth:deviantart (pr#14)

discord

  • [search] implement date-before skip

e621

  • implement tags-blacklist import (gh#5208)
  • update tags format

exhentai

  • enable tags categories by default

facebook

  • fix TypeError for users without avatar page (gh#9347)
  • change loop default to true (cb#26)
  • disable jump detection for multi-photo posts (gh#9286)
  • download only 1 file for single-photo posts (gh#9286)
  • support /permalink.php post URLs (gh#9352)

flickr

  • fix extracting public API key (gh#9449)
  • use non-download URLs by default (gh#8297)

foolfuuka

  • improve media link resolution (pr#9047)

gelbooru_v01

gelbooru_v02

  • fix infinite pagination loop when using --range (gh#9176)

gofile

  • update WT generation salt (gh#9183)
  • enable recursive by default

harvardlawnuremberg

  • add document extractor (pr#18)

imagepond

  • support /i/ URLs & update root domain
  • update extractors

imageshack

instagram

joyreactor

  • rewrite (gh#6642 gh#7104 gh#7531)
  • ignore tag info section
  • stop pagination when next page link is not present

koofr

  • fix names with special characters (cb#31)

mangadex

  • extract user metadata (pr#15)

myhentaigallery

  • support URLs starting with /a/ (cb#13)

newgrounds

  • fix login with username & password (gh#9308)

nhentai

  • update to API v2 (cb#1)

nsfwalbum

nudostar

  • fix file URLs of models with more than 1000 images (gh#9332)

oauth

  • fix AttributeError: 'update' (gh#9230)
  • fix cache attribute overwriting function
  • implement code_challenge flow for deviantart (pr#14)

patreon

  • fix extracting content images (gh#9292)
  • restore content metadata (gh#9171 gh#9208 gh#9185)
  • use text.filename_from_contentdisposition (gh#9322)
  • [user] implement date-before skip

pholder

pixeldrain

  • enable recursive by default

pixiv

  • fix KeyError: 'total_comments' (cb#16)
  • rename follow to followed subcategory
  • [bookmark] implement cursor support (gh#9289)

plurk

poipiku

  • implement login with username & password (gh#9284)

postype

reddit

  • add user-agent-oauth option (gh#8641 gh#8838)
  • support www.old.reddit.com URLs (gh#9137)
  • use OAuth API when client_id is given (gh#8838)
  • [user] improve error message for suspended accounts (gh#9177)

redgifs

  • implement post-range skip (gh#9274)
  • improve API related error messages (gh#9274)
  • increase number of results per page to 100 (gh#9274)
  • [user] forward URL parameters (gh#9274)

sankaku

  • implement tags-blacklist import (gh#5208)

schalenetwork

  • enable tags categories by default

scrolller

sizebooru

snapchat

szurubooru

  • submit consent form when necessary
  • use util.HTTPBasicAuth()

tcbscans

tsumino

  • remove module

tumblr

  • do not ignore reblogs option for single posts
  • filter duplicate inline images (gh#9418)
  • fix "reblogs": "same-blog" (gh#9360)
  • improve inline file regex (gh#6505)
  • retry without OAuth when blocked by other user (gh#8803)
  • support date-before skip

twitter

  • ensure self.api is always defined (gh#9271 gh#9273 cb#9295)
  • extend article handling (gh#8995)
  • extract friends_mutual user metadata (gh#9349)
  • prevent crash when processing empty pinned Tweets (#9231)
  • fix KeyError: 'id_str' when downloading card videos (gh#9294)
  • fix possible KeyError: 'entities' in _transform_user()
  • implement metadata-user option (gh#8984)
  • implement "search-pagination": "date"
  • implement showreplies option (gh#7092 gh#9389)
  • rename replies subcategory to with-replies (gh#9162 gh#8107)
  • rewrite article image URLs (gh#8995)
  • use _tweetid_to_datetime method

urlgalleries

vipergirls

webtoons

  • extract date metadata from comic episode listings (pr#6)

weibo

  • add likes option (gh#9366)
  • update Sina Visitor System bypass (gh#9279)
  • visit homepage for guest cookies when API blocked (gh#9279)

xenforo

  • decode /redirect/ URLs (gh#9042 gh#9364)
  • extract thread[path] metadata (gh#9369)
  • fix binascii.Error: Incorrect padding
  • improve detection of auth requirement (gh#9216)
  • support thefappeningblog.com/forum (cb#12)

xfolio

  • implement fullsize option
  • support .webp preview image downloads

ytdl

  • propagate ControlException and handle ignoreerrors (pr#9229)

zerochan

Downloaders

http

  • check download flag before connecting to server (gh#9109)

Post Processors

  • add child & child-after events

exec

  • add output option
  • implement success & error options

metadata

  • add empty option
  • improve _write_tags() code

ugoira

  • add more mkvmerge options (gh#8803)
  • disable mkvmerge-mtime by default (gh#9222)
  • disable mkvmerge output, add mkvmerge-output option

Actions

  • implement keyword action

flag

  • implement skip (gh#8960)
  • implement pause, toggle, and clear
  • add ability to clear/reset all flags

Cache

  • remove decorator classes
  • support :memory: database path
  • update database file access

Configuration

  • support setting default file type via GDL_CONFIG_TYPE environment variable and --config-type command-line option
  • improve --config-status
  • fix JSONDecodeError when using non-JSON config types (gh#9063)

Docker

  • harden builds
    • enable hash-checking mode
    • disallow source distributions
    • https://pip.pypa.io/en/stable/topics/secure-installs/
  • install gallery-dl from Codeberg repository

Documentation

  • add pull_request_template.md

configuration

  • document postprocessor /MODE and @EVENT (gh#8980)
  • document postprocessor type (gh#8803)
  • improve output.colors & output.ansi description (gh#9155)
  • update extractor.*.archive
  • use anchors for alternative/deprecated names

README

  • fix broken repo links (pr#2)
  • include link to options in opening paragraph (gh#8803)
  • update GitHub links (cb#38)
  • update links to stable executable releases

Options

  • add --blacklist & --whitelist command-line options
  • add --config-type & --config-json command-line options
  • add --restrict-filenames & --windows-filenames command-line options
  • add geo-bypass / --xff option
  • add sleep-retries option
  • use "ugoira": "original" by default
  • use yuv420p output pixel format for ugoira presets
  • implement various cache command-line options
    • --cache-clear
    • --cache-file
    • --cache-show
    • --cache-status
    • --cache-vacuum

Path

  • implement generate_path()
  • include "html": "htm" in default extension-map
  • include | replacement in windows+ preset

Scripts

  • implement requirements.py
  • [pull-request] support Codeberg PR URLs
  • [release] update issue link replacements
  • [run_tests] randomize test order

Tests

  • fix failure due to test order

job

  • add tests for DataJob resolve
  • test parent-metadata / _extractor handling

results

  • fix testing external extractors
  • implement testing exception messages

Utilities

text

  • implement extract_urls() helper
  • implement filename_from_contentdisposition (gh#4022)
  • implement parse_hex_escapes

util

  • add type argument to HTTPBasicAuth
  • implement build_duration_func_ex()
  • implement predicate_date() & predicate_tags()
  • implement complex tags-blacklist filter rules
  • improve range predicate stop by using flags
  • remove support for paths as lists

Miscellaneous

  • add init option
  • [exception] implement StopDownload
  • [formatter] add q & Q conversions - URL-encode & -decode values
  • [workflows:executables] use Python 3.14
v1.31.10 Breaking risk
Breaking changes
  • DeviantArt: `original` downloads are disabled by default (config change)
Security fixes
  • Patreon: restrict legacy `User-Agent` use to mitigate potential abuse (#9249)
  • Twitter: fix extraction of `ondemand.s.a.js` and prevent crash on empty pinned Tweets (multiple fixes #9260, #9262, #9265, #9267, #9270, #9231)
Notable features
  • Added extractor for Fantasia fanclubs
  • Added support for Foriio
  • Added support for Iwara.ai
Full changelog

Extractors

Additions

  • [fantia] add extractor for supported fanclubs (#9236 #9237)
  • [foriio] add support (#2293)
  • [iwara] support iwara.ai (#9241)
  • [rule34world] add support (#9227)
  • [wikimedia] support mgewiki.moe (#9258)
  • [xenforo] support blacktowhite.net (#9216)

Fixes

  • [bellazon] handle /main/index.php attachments (#9140)
  • [bilibili] fix & improve livephoto filenames (#9210)
  • [deviantart] disable original downloads by default (#9211 #9213 #9217)
  • [deviantart] apply original to all downloadable file types (#9217)
  • [exhentai] prevent ValueError for incomplete MPV data (#9259)
  • [gofile] update Website Token salt
  • [myportfolio] disallow cdn.myportfolio.com URLs
  • [patreon] restrict legacy User-Agent use (#9249)
  • [pholder] fix Could not locate window.data JSON error (#9264)
  • [reddit] fix results for /user/…/comments/ URLs (#9212)
  • [reddit] fix previews for comment submissions (#9206)
  • [twitter] fix ondemand.s.a.js extraction (#9260 #9262 #9265 #9267 #9270)
  • [twitter] prevent crash when processing empty pinned Tweets (#9231)

Improvements

  • [bilibili] extract user_id metadata (#9210)
  • [deviantart] remove blur filters (#9217)
  • [twitter] implement previews option (#9232)
  • [wikimedia] handle index.php paths (#9258)
  • [xenforo] add quoted option (#9207)
  • [xenforo] add attachments & embeds options
  • [xenforo] improve auth requirement detection (#9216)
  • [yiffverse] recognize system & meta tag types

Post Processors

  • [mtime] allow using mode to select date key
v1.31.9 Bug fix

Fixed AttributeError in twitter extractor.

Full changelog

Extractors

Fixes

  • [twitter] fix AttributeError: '_update_variables_search_maxid' (#9203)
v1.31.8 New feature
⚠ Upgrade required
  • HTTP downloader now releases connections on `416 Range Not Satisfiable` responses
  • `path-restrict` accepts `windows+` as a special value
Notable features
  • Added `tag` extractor for fanbox and readcomiconline
  • Added support for filester, mixdrop file extractor, e621 shared URLs, sankaku parent post search, smugmug deleted‑file error handling, tumblr media from answers/asks, vipr missing‑image detection, xenforo imgur embeds, facebook:photo metadata improvement, pixiv hash extraction
  • Added `actions` postprocessor and extended `ugoira` mkvmerge options
Full changelog

Extractors

Additions

  • [fanbox] add tag extractor (#9128)
  • [filester] add support (#9196)
  • [mixdrop] add file extractor (#8982 #9130)
  • [readcomiconline] add tag extractor (#9190)

Fixes

  • [bellazon] fix content of posts with multiple quotes (#9140)
  • [fansly] fix KeyError: 'data' (#9149)
  • [gofile] fix extractor (#9183)
  • [kemono:discord] fix archive data overwriting general data (#9184 #9195)
  • [luscious] fix empty file URLs (#9172 #9188)
  • [paheal] fix tag searches with only 1 result (#9186)
  • [patreon] update default User-Agent headers (#9165)
  • [reddit:user] disable only for upvoted & downvoted results (#9124)
  • [simplyhentai] rewrite (#9158)
  • [tiktok] use more lenient regex for secondary user IDs (#9094)
  • [twitter] use max_id as default search-pagination (#9193 #9194)
  • [weebdex] fix KeyError: 'chapter' for oneshots (#9123)
  • [whyp] fix downloading private content (#9133)

Improvements

  • [e621] support shared post URLs (#9168)
  • [sankaku] include parent post in parent:… searches (#9102)
  • [smugmug] improve error for deleted files (#9140)
  • [tumblr] support media from answer'/'asks posts (#4509)
  • [vipr] detect missing images (#8415)
  • [xenforo] support imgur media embeds (#9127)

Metadata

  • [facebook:photo] improve metadata availability (#9147)
  • [pixiv] extract hash metadata when available
  • [postimg] fix filename metadata (#9119)

Downloaders

  • [http] release connections on 416 Range Not Satisfiable responses

Post Processors

  • [actions] add actions postprocessor
  • [hash] allow using mode to select hashes
  • [ugoira] add more mkvmerge options (#8803)

Miscellaneous

  • [path] add windows+ as a special path-restrict value
v1.31.7 Bug fix
Notable features
  • [pholder] added support
  • [xenforo] added `profile` extractor and fixed attachment extraction
  • [iwara] added `format` option
Full changelog

Extractors

Additions

  • [pholder] add support (#2568 #9067)
  • [xenforo] add profile extractor (#9046)

Fixes

  • [deviantart] use private token for tier locked deviations (#9072)
  • [iwara] fix extractors (#9096)
  • [mangadex] preserve api-parameters order (#9111)
  • [mangadex:covers] fix 400 Bad Request when using lang option
  • [manganelo] fix manga extractor (#9059)
  • [mangataro] fix chapter extractor
  • [paheal] fix md5 metadata (#9110 #9121)
  • [pornpics] fix search extractor pagination (#9022 #9068)
  • [postimg:gallery] support multiple pages (#9119)
  • [reddit] fix KeyError: 'children' when expanding comments (#9037)
  • [reddit] fix /external-preview embed downloads (#9037)
  • [reddit:user] fix user lookup when using sub view (#8228 #9032)
  • [reddit:user] disable only for /saved results (#9071)
  • [simpcity] fix gofile links (#9042)
  • [weebdex] fix chapter-reverse (#9041)
  • [xenforo] fix IndexError when extracting attachments (#9046)
  • [xenforo] fix attachments extraction (#9070)

Improvements

  • [eporner] detect Age Verification pages (#9064)
  • [fikfap] support main page post URLs (#9026)
  • [imagefap] don't return anything for empty profiles (#9034)
  • [imagefap] handle /galleries?folderid=0 URLs (#9034)
  • [iwara] add format option
  • [koofr] improve subdirectory handling
  • [mangadex] add covers option

Metadata

  • [chevereto] extract title metadata (#9061)
  • [kemono] add archives-format option (#9104)
  • [koofr] provide num & count

Post Processors

  • [exec] use non-UNC path replacements on Windows (#8879)
  • [ugoira] fix processing .gif frames

Miscellaneous

  • [formatter] fix exceptions for non-default fmt (#9113)
v1.31.6 Bug fix
⚠ Upgrade required
  • Added support for Floorp cookies (#9005)
  • Firefox profile path support extended to version 147+ (#8803)
Notable features
  • Added `hashtag` extractor for fikfap (#9018)
  • Support dashes in usernames for fikfap (#9019)
  • Reddit user extractor now supports `only` option and provides `user` metadata (#8228)
Full changelog

Extractors

Additions

  • [fikfap] add hashtag extractor (#9018)

Fixes

  • [8chan] fail downloads of POW images (#8975)
  • [artstation] fix embedded videos (#8972 #9003)
  • [artstation] fix challenge extractor
  • [imagefap:user] support multiple pages (#9016)
  • [imhentai] use alternate strategy for galleries without image data (#8951)
  • [instagram] use /topsearch/ to fetch user information (#8978)
  • [pixiv] fix errors when using metadata options for avatar/background
  • [simpcity] extract tiktok & reddit media embeds (#8994 #8996)
  • [tiktok] always try to resolve JS challenges (#8993)
  • [tiktok] use time cursor for story requests (#8991)
  • [tiktok] identify when user accounts do not exist (#8977)
  • [tiktok] do not exit early when rolling back cursor (#8968)
  • [xhamster] fix user profile extraction (#8974)

Improvements

  • [8chan] skip TOS cookie name lookup if already present
  • [artstation] download /8k/ images (#9003)
  • [discord:server-search] use max_id for pagination
  • [fikfap] allow for dashes in usernames (#9019)
  • [instagram] cache user profile results on disk (#8978)
  • [reddit:user] implement only option (#8228)
  • [reddit:user] provide user metadata (#8228)
  • [tiktok] fix outdated error message (#8979)
  • [twitter] support article media (#8995)
  • [xenforo] implement "order-posts": "reaction" (#8997)

Cookies

  • add support for Floorp (#9005)
  • support Firefox 147+ profile paths (#8803)

Miscellaneous

  • [job] fix overwriting _extractor fields (#8958)
  • use tempfile when updating input files (#8981)
v1.31.5 New feature
Notable features
  • Added `server-search` extractor for Discord
  • Added `image` and `people` extractors for Listal
  • Added support for Mangafreak and Mangatown sites
Full changelog

Extractors

Additions

  • [discord] add server-search extractor
  • [listal] add image & people extractors (#1589 #8921)
  • [mangafreak] add support (#8928)
  • [mangatown] add support (#8925)
  • [xenforo] support titsintops.com (#8945)
  • [xenforo] support forums.socialmediagirls.com (#8964)

Fixes

  • [civitai:user-posts] fix pagination (#8955)
  • [imhentai] detect galleries without image data (#8951)
  • [kemono] fix possible AttributeError when processing revisions (#8929)
  • [mangataro] fix manga extractor (#8930)
  • [pornhub] fix 400 Bad Request when logged in (#8942)
  • [tiktok] solve JS challenges (#8850)
  • [tiktok] fix account extraction (#8931)
  • [tiktok] extract more story item list pages (#8932)
  • [tiktok] do not fail story extraction if a user has no stories (#8938)
  • [weebdex] make metadata extraction non-fatal (#8939 #8954)
  • [weibo] fix KeyError - 'pid' when processing subalbums (#8792)
  • [xenforo] improve attachment extraction (#8947)
  • [xenforo] fix cookies check before login (#8919)

Improvements

  • [exhentai] implement Multi-Page Viewer support (#2616 #5268)
  • [kemono] reduce revisions API requests when possible
  • [tiktok] implement subtitles support (#8805)
  • [tiktok] implement downloading all cover types (#8805)
  • [tiktok] do not stop extraction if a post fails (#8962)
  • [weebdex] add lang option (#8957)
  • [weebdex] support query parameter filters
  • [weibo] add subalbums include (#8792)
  • [xenforo] improve error message extraction (#8919)
  • [xenforo] decode /goto/link-confirmation links (#8964)

Post Processors

  • [mtime] fix overwriting Last-Modified mtime when selecting invalid values (#8918)

Miscellaneous

  • [docs/options] add Table of Contents
  • [job] add output.jsonl option (#8953)
  • [job] add extractor.*.parent option
  • [job] enable all parent-… options for parent extractors by default
v1.31.4 Breaking risk
Breaking changes
  • Removed [batoto] module (#8834 #8908).
Notable features
  • [common] added `parent-session` option
  • [common] added `googlebot` User-Agent preset
  • [docker] build from python:3.14-alpine
Full changelog

Extractors

Additions

  • [kaliscan] add support (#8917)
  • [turbo] add support - rewrite saint extractors (#8893 #8896 #8909)
  • [xenforo] support celebforum.to (#8902)
  • [xenforo] add media-album extractor (#8902)

Fixes

  • [mangafire] fix extractors - generate vrf tokens (#8400 #8906)
  • [nitter] use gallery-dl/<version> User-Agent (#7045 #8130 #8409)
  • [tiktok] fix following extractor (#8849)
  • [xenforo] fix using cookies for custom instances (#8902)

Improvements

  • [imagebam] raise NotFoundError for deleted images & galleries (#8890)
  • [kemono:discord] improve filename parsing
  • [kemono:discord] support server URLs with trailing /
  • [tiktok] download best quality videos (#8846)
  • [tiktok] prefer legacy endpoint for user post extraction (#8812 #8847)
  • [twitter] implement "ratelimit": "abort:N" (#5251 #8864)
  • [weebdex] add data-saver option (#8914)
  • [xenforo] ignore links starting with #

Metadata

  • [kemono:discord] extract archives metadata (#8898)
  • [xenforo:media-album] extract album metadata (#8902)

Removals

  • [batoto] remove module (#8834 #8908)

Miscellaneous

  • [common] implement parent-session option
  • [common] add googlebot User-Agent preset
  • [docker] build from python:3.14-alpine
  • [release] add more checks before committing a release
  • [util] replace classes with functions for predicates, Popen, HTTPBasicAuth
v1.31.3 Breaking risk
Breaking changes
  • Rename of `USERAGENT` constant to `USERAGENT_GALLERYDL` (#8836)
Notable features
  • Add support for Live Photo downloads from Bilibili
  • Add `zip` option for Pixeldrain album extraction
Full changelog

Extractors

Additions

  • [booth] add category extractor (#8867)
  • [thefap] add support (#8821 #8822)
  • [xenforo] implement media support (#8785)
    • add media-item, media-user, media-category extractors

Fixes

  • [ahottie:album] support multiple pages (#8862 #8886)
  • [bellazon] use data-full-image URLs if available (#8833)
  • [fanbox] make comments extraction non-fatal (#8814)
  • [imagevenue] fix NotFoundError for valid image links (#8818)
  • [xenforo] fix/improve bb*Wrapper extraction (#8868)

Improvements

  • [bellazon] match thread URLs with escaped characters
  • [bilibili] add support for Live Photo downloads (#8860)
  • [booth:item] support URLs with language codes
  • [chevereto] implement password support
  • [chevereto:user] support album results
  • [dankefuerslesen] support /reader/series URLs (#8811)
  • [furaffinity:favorite] support URLs with custom start position
  • [imagetwist:gallery] support multiple pages (#8826)
  • [koofr] refactor (#8803)
  • [pixeldrain:album] add zip option
  • [pixeldrain] warn about hotlink-protected files (#8803)
  • [pixeldrain] improve filename parsing
  • [rule34xyz] support URLs with www subdomain (#8875)
  • [saint] support turbovid.cr & turbo.cr URLs (#8851 #8888)
  • [shopify] support URLs starting with language codes
  • [webtoons] extend bgm option (#8733)
  • [weibo:album] implement subalbum support (#8792)
  • [wikimedia] use gallery-dl/<version> User-Agent (#8770 #8861)

Metadata

  • [bellazon] unescape thread[slug] names
  • [imagetwist:gallery] extract gallery_title & gallery_id metadata
  • [motherless] fix gallery media metadata issues (#8873)
  • [rule34xyz] recognize system & meta tag types
  • [sexcom] fix tags when passing cookies (#8880)
  • [tiktok] provide post_type metadata (#8815)
  • [xenforo] extract author_slug metadata (#8785)

Downloaders

  • [ytdl] implement _ytdl_manifest_remux

Miscellaneous

  • [common] implement "user-agent": "+PRESET"
  • [docs/README] add Discord link
  • [formatter] overload . operator
  • [job] fix extractor kwdict values being unavailable in filters
  • [util] adjust Firefox/Chrome User-Agent versions
  • [util] rename USERAGENT to USERAGENT_GALLERYDL (#8836)
v1.31.2 New feature
Notable features
  • Added extractors for ahottie, discord server‑assets, imgpv image, manganelo bookmark, tiktok stories/liked/saved/reposts, twitter notifications, whyp, yourlesbians album
  • Added options: facebook `loop`, fansly `previews`, koofr `zip`, tiktok `order-posts`
Full changelog

Extractors

Additions

  • [ahottie] add aupport (#8710)
  • [discord] add server-assets extractor (#8589)
  • [imgpv] add image extractor (#8773)
  • [manganelo] add bookmark extractor (#8776)
  • [tiktok] add support for stories, liked posts, saved posts, reposts (#8035 #8466 #8715)
  • [twitter] add notifications extractor (#7974)
  • [whyp] add support (#8725)
  • [yourlesbians] add album extractor (#8713)

Fixes

  • [batoto] replace k-subdomain image URLs with n-subdomain (#8791)
  • [civitai] update quality-videos default (#8787)
  • [deviantart:stash] fix JSONDecodeEerror for folders (#8750)
  • [exhentai] fix possible exception in finalize() (#8741)
  • [instagram:stories] extract correct expires dates (#8764)
  • [sankaku] fix re-authentication (#8779)
  • [tapas] unescape HTML entities in image URLs (#8790)
  • [tumblr:search] prevent KeyError when using offset pagination (#8720)
  • [xenforo] fix incomplete video URLs (#8786)

Improvements

  • [bunkr] detect new maintenance video file (#8802)
  • [fansly] disable formats check by default (#8757)
  • [instagram] detect homepage redirects (#8714)
  • [instagram] don't warn on minor image size differences (#8300)
  • [pixiv] support sketch include (#8789)
  • [subscribestar] support filterting user posts by tag (#8737)
  • [tiktok] remove yt-dlp dependency (#7246 #8466 #8730 #8715)
  • [webtoons] download episode background music (#8733)
  • [xenforo] support /#post-ID URLs

Metadata

  • [pixiv] provide count metadata (#8794)
  • [tiktok] combine …_id fields into a single file_id one (#8804)
  • [webtoons] extract num_play & num_stop for background music (#8733 #8755)

Options

  • [facebook] add loop option (#8696)
  • [fansly] add previews option (#8686)
  • [koofr] implement zip option (#6582 #8700)
  • [tiktok] add order-posts option (#8730 #8715)

Downloaders

  • [http] add MIME type and signature for .aac files
  • [ytdl] fix overwriting mtime of downloaded files (#8767)
  • [ytdl] expect all exception types when extracting info_dict (#8343)

Miscellaneous

  • [actions] fix abort (#8753)
  • [options] add --sleep-skip (#6582)
v1.31.1 New feature
Notable features
  • Added generic `2chen` board extractor supporting https://schan.help/
  • Added `watch` extractor for aryion
  • Added `gallery` extractor for comedywildlifephoto
Full changelog

Extractors

Additions

  • [2chen] implement generic 2chen board extractors
    • support https://schan.help/ (#8680)
  • [aryion] add watch extractor (#8705)
  • [comedywildlifephoto] add gallery extractor (#8690)
  • [koofr] add shared extractor (#8700)
  • [picazor] add user extractor (#7083 #7504 #7795 #8717)
  • [weebdex] add support (#8722)
  • [xenforo] support allthefallen.moe/forum (#3249 #8268)

Fixes

  • [aryion:favorite] fix extraction (#8705 #8723 #8728)
  • [aryion] fix description metadata
  • [boosty] include Authorization header with file downloads (#8704)
  • [fanbox] make _extract_post() non-fatal (#8711)
  • [furaffinity] fix tags metadata (#8724)
  • [mastodon] fix AttributeError: 'parse_datetime_iso' (#8709)
  • [tenor] fix title metadata
  • [twitter] fix avatar & background downloads with "expand": true (#8698)

Improvements

  • [boosty] warn about expired auth cookie tokens (#8704)
  • [misskey] implement order-posts option (#8516)
  • [reddit] use "videos": "dash" by default (#8657)
  • [pixiv] warn about invalid PHPSESSID cookie (#8689)

Downloaders

  • [ytdl] fix UnboundLocalError: 'tries' (#8707)
  • [ytdl] respect --no-skip

Miscellaneous

  • [path] implement dynamic length directories (#1350)
  • [formatter] add I format specifier - identity
  • [tests] add path tests
v1.31.0 Breaking risk
Breaking changes
  • [redbust] remove module
Notable features
  • Add `channel` extractor for arena, `search` for aryion, support for audiochan, cfake, cyberfile:folder (subfolders), Danbooru media‑asset, e621 artist & artist-search, eporner, fikfap, fitnakedgirls, myhentaigallery tag, nudostarforum, okporn, pornpics category & listing, pornstarstube, sexcom feed, shimmie2 soybooru.com support, sxypix, generic XenForo forum extractors
  • Downloader enhancements: http `_http_segmented` support, ytdl retry functionality and improved error handling
  • Post‑processor additions: metadata `newline` option, exec `verbose` option
Full changelog

Extractors

Additions

  • [arena] add channel extractor (#5847 #8509)
  • [aryion] add search extractor (#8567)
  • [audiochan] add support (#8602)
  • [cfake] add support (#707 #6021 #8549 #8687 #8430)
  • [cyberfile] add shared extractor (#8323)
  • [Danbooru] add media-asset extractor (#8580)
  • [e621] add artist & artist-search extractors (#8448)
  • [eporner] add support (#8581)
  • [fikfap] add support (#8673)
  • [fitnakedgirls] add support (#8671)
  • [myhentaigallery] add tag extractor (#8537)
  • [nudostarforum] add support (#8664)
  • [okporn] add support (#8575)
  • [pornpics] add category & listing extractors (#8662)
  • [pornstarstube] add support (#8576)
  • [sexcom] add feed extractor (#8519)
  • [shimmie2] support soybooru.com (#8467)
  • [sxypix] add support (#4507 #8391 #8574)
  • [xenforo] implement generic XenForo forum extractors

Fixes

  • [bellazon] fix errors when handling guest users (#8397)
  • [bellazon] fix starting from a specific page
  • [cien] fix creator & recent extractors (#8524)
  • [fanbox:redirect] disable cookie usage (#8565)
  • [gofile] fix extraction (#8681 #8683)
  • [imagebam] fix filename & extension for names without ext (#8476)
  • [instagram] fix AttributeError: 'videos_dash' (#8561)
  • [motherless] fix gallery_title extraction (#8605)
  • [paheal] fix AttributeError
  • [pixiv] fix KeyError: 'is_bookmarked' (#8398)
  • [postimg] fix extraction (#8505)
  • [rawkuma] update extractors to new site layout (#8568)
  • [realbooru] fix tags for video posts (#8455)
  • [reddit] fix KeyError: 'media_metadata' for embeds (#8551)
  • [sankaku][idolcomplex] fix download URLs (#8666)
  • [schalenetwork] fix tags categories (#8625)
  • [silverpic] fix extraction & force .net TLD
  • [simpcity] fix content for first post of a thread
  • [simpcity] fix starting from a specific page (#8599)
  • [twitter] fix KeyError for temporarily unavailable users (#8423)
  • [twitter] fix KeyError - 'source_id' with disabled transform (#8429)
  • [twitter] fix AttributeError for search-pagination": "max_id" (#8613)
  • [twitter] update & fix pinned Tweet extraction (#8500)
  • [vsco] use "browser": "firefox" by default (#8127)
  • [webtoons] fix thumbnail extraction (#8413)
  • [xasiat] fix IndexError for albums without category (#8569)

Improvements

  • [2ch] support .org TLD (#8629)
  • [bunkr] detect when an album is deleted mid-download (#8619)
  • [cyberdrop] update domain to cyberdrop.cr (#8496)
  • [cyberfile:folder] support subfolders (#8323)
  • [deviantart:gallery] match URLs with query parameters (#8514)
  • [discord] limit length of default filenames (#6582)
  • [erome] improve error message for deleted & copyrighted albums (#8665)
  • [fansly] handle posts without accountId/contentId/attachments (#8572)
  • [flickr] extract public API key from website (#7564 #7649 #7700 #8553)
  • [imagehost] improve filename & extension handling
  • [imagetwist] detect deleted images (#8415)
  • [imagevenue] improve error for deleted images (#8477)
  • [imgbox] match direct links (#8474)
  • [imhentai:search] support /advanced-search/ URLs (#8507)
  • [instagram] improve error for non-existent profiles (#8550)
  • [jpgfish] update domain to jpg7.cr (#8530)
  • [newgrounds] set error status when encountering inaccessible posts (#8654)
  • [realbooru] extract video fallbacks (#8661)
  • [reddit] use REST API by default (#8559)
  • [reddit] support comment share link (#8434)
  • [rule34us:tag] support URLs with empty q query parameter (#8546)
  • [pixhost] force .to TLD (#8428)
  • [postimg] force postimg.cc domain (#8505)
  • [sankaku][idolcomplex] support URLs with locale code (#8667)
  • [simpcity] implement login with username & password (#8418)
  • [simpcity] extract attachment/inline files (#8560)
  • [simpcity] extract click to load media URLs (#8609)
  • [tiktok] ignore empty music entries (#8571)
  • [twitter] restore better user NotFoundError messages (#8621)
  • [twitter] implement workarounds for empty core data (#8613)
  • [wikimedia] add format=original to fandom/wikigg file URLs (#5512)
  • [wikimedia] implement config lookups for fandom/wikigg sites (#7283)

Metadata

  • [bellazon] add num_internal & num_external metadata fields (#8415)
  • [bellazon] remove query parameters from attachment IDs (#8544)
  • [bunkr] extract album_… metadata for /f/ URLs (#8405)
  • [chevereto] extract album_id & album_slug metadata (#8604)
  • [chevereto:album] extract count & num metadata (#8604)
  • [civitai] implement extracting tags metadata (#8626)
  • [fanbox] return metadata of inaccessible posts (#8643)
  • [hentaifoundry] extract categories metadata (#8656)
  • [imagehosts] provide post_url metadata (#6582)
  • [instagram] extract subscription metadata for story/highlight items (#8459)
  • [instagram] extract correct width & height for videos (#8399)
  • [kemono] improve filename
  • [patreon] include full metadata with each URL (#4286 #8498)
  • [pixhost] extract directory metadata (#6582)
  • [subscribestar] improve filename (#8416)
  • [wikimedia] provide lang metadata (#7283)

Options

  • [bluesky] add api-server option (#8668)
  • [civitai] add sort & period options (#8426)
  • [fanbox:creator] add offset option (#6582)
  • [itaku] add order option
  • [mangadex] add data-saver option (#8573)
  • [misskey] add date-min & date-max options (#8516)
  • [misskey] add text-posts option (#8516)
  • [patreon] add order-posts option (#7856 #8482)
  • [schalenetwork][hdoujin] re-implement cbz option (#8431)
  • [tiktok] add covers option (#8515)
  • [twitter] add general limit option (#8173)
  • [twitter] implement retries-api option (#8317)
  • [twitter] implement search-results option (#8613)
  • [twitter] implement using fallback values for search-limit (#8173)
  • [weibo] add text option (#8422)

Removals

  • [redbust] remove module (#6582)

Common

  • allow general ISO 8601 values for date-min & date-max
  • use parent value as parent-metadata default (#8525 #8604)

Downloaders

  • [http] fail downloads of empty files (#8661)
  • [http] implement _http_segmented (#8602)
  • [ytdl] implement retry functionality (#1131 #8269)
  • [ytdl] improve error detection
  • [ytdl] improve error message when importing default ytdl modules
  • [ytdl] update _extract_manifest()
  • [ytdl] forward _ytdl_manifest_headers to formats
  • [ytdl] restructure code

Post Processors

  • [metadata] add newline option (#8439)
  • [exec] add verbose option (#7743)

Formatter

  • add Lb format specifier - L for bytes
  • add Xb format specifier - X for bytes (#6582)

Job

  • add keywords-global option (#6582)
  • implement post-filter & post-range options
  • implement "archive-event": "after" (#8373)
  • use identity checks
  • inline dispatch loop

Path

  • implement conditional part-directory (#8329)
  • treat broken symlinks as existing files (#8490)
  • improve exists() performance

Miscellaneous

  • [cookies] fix cookie count logging message order (#8414)
  • [dt] move datetime utils into separate dt module
  • [output] add defer option for logging files (#8523)
  • [output] add Logger.traceback() helper
  • [scripts/init] fix error when running with default values (#8583)
  • [util] support integer values for …-range options (#8604)
  • [workflows:tests] include Python 3.14 & pypy3.11
v1.30.10 Breaking risk
Breaking changes
  • Removed Twitter login support (#4202 #6029 #6040 #8362)
Notable features
  • [bluesky] Added `bookmark` extractor
  • [exec] Supports `{_temppath}` replacement fields
  • [formatter] Improved error messages
Full changelog

Extractors

Additions

  • [bluesky] add bookmark extractor (#8370)
  • [dandadan] add support (#8381)

Fixes

  • [bellazon] fix video URL extraction (#8392)
  • [bluesky] handle exceptions during file extraction
  • [civitai] prevent downloading random posts from deleted users (#8299)
  • [girlsreleased] update API endpoints (#8360)
  • [instagram] restore video_dash_manifest downloads (#8364)
  • [kemono] prevent fatal exceptions when retrieving user profile data (#8382)
  • [mangadex] fix RuntimeError for titles without a description (#8389)
  • [naver-blog] fix video extraction (#8385)
  • [poipiku] fix original file downloads (#8356)
  • [weibo] fix retrieving followers-only content (#6447 #7939 #8063 #8354 #8357)
  • [weibo] use page parameter for feed results (#7523 #8128 #8357)
  • [wikimedia] fix name & extension of files without an extension (#8344)
  • [wikimedia] ignore missing files (#8388)

Improvements

  • [bellazon] ignore links to other threads (#8392)
  • [common] disable delay for request_location()
  • [fansly] update format selection (#4401)
  • [fansly] download user posts from all account walls (#4401)
  • [instagram] support /share/SHORTCODE URLs (#8340)
  • [weibo] ignore ongoing live streams (#8339)
  • [zerochan] forward URL parameters to API requests (#8377)

Metadata

  • [instagram] extract subscription metadata (#8349)
  • [webtoons] fix episode metadata extraction (#2591)

Removals

  • [twitter] remove login support (#4202 #6029 #6040 #8362)

Post Processors

  • [exec] support {_temppath} replacement fields (#8329)

Miscellaneous

  • [formatter] improve error messages (#8369)
  • [path] implement conditional base-directory
  • use utf-8 encoding when opening files in text mode (#8376)
v1.30.9 Breaking risk
Breaking changes
  • [chevereto] remove `img.kiwi`
Notable features
  • [mangafire] add support
  • [mangareader] add support
  • [patreon] add `collection` extractor
Full changelog

Extractors

Additions

  • [mangafire] add support (#7064 #7701)
  • [mangareader] add support (#6529 #6868)
  • [patreon] add collection extractor (#8286)
  • [s3ndpics] add support (#8322)

Fixes

  • [chevereto] fix id for links without file name (#8307)
  • [chevereto:album] fix video downloads (#8149 #8295)
  • [hdoujin] fix KeyError: 13 by adding reclass tag type (#8290)
  • [misskey] include withRenotes parameter in API requests (#8285)
  • [nozomi] percent-encode search tags (#8328)
  • [simpcity] fix KeyError: 'url' when thread author is deleted (#8323)
  • [twitter] fix quote_id of individual Tweets (#8284)
  • [zerochan] prevent HttpError: '503 Service Temporarily Unavailable' (#8288)

Improvements

  • [chevereto] support URLs with www subdomain (#8149)
  • [imxto:gallery] support multiple pages (#8282)
  • [instagram] add warn-images & warn-videos options (#8283)
  • [instagram] use reel subcategory for /reel/SHORTCODE URLs (#8274)
  • [instagram] support /reels/SHORTCODE URLs (#8318)
  • [paheal] normalize No results output message (#8313)
  • [pixiv] implement searching past 5000 results (#1686 #7082 #8298)
  • [thehentaiworld] support more post URL formats (#8277)
  • [weibo] download .m3u8 manifests with ytdl (#8339)
  • [weibo] resolve wblive-out.api.weibo.com URLs (#8339)
  • [weibo] use replay_hd URLs as video fallback (#8339)
  • [wikimedia] add ability to download image revisions (#7283 #8330)
  • [zerochan] normalize No results output message (#8313)

Metadata

  • [hdoujin] extract source metadata (#8280)
  • [instagram] provide type metadata (#8274)
  • [mangadex] extract more manga-related metadata (#8325)

Removals

  • [chevereto] remove img.kiwi

Downloaders

  • [http] add MIME type and signature for m3u8 & mpd files (#8339)

Post Processors

  • [python] restore archive functionality

Miscellaneous

  • [cookies] add support for Orion browser (#8303)
  • [docker] include more optional Python dependencies (#8026)
  • [docs] update configuration.rst formatting
v1.30.8 Breaking risk
⚠ Upgrade required
  • ytdl downloader fixed errors caused by removal of deprecated options
Notable features
  • Added extractors for chevereto (imglike.com, category), Danbooru (random), hdoujin, imgpile, mangadex (covers), mangataro, thehentaiworld
  • Updated 2ch domain to 2ch.su and added support for 2ch.life URLs
  • Extract biography metadata from facebook, full tagged_… metadata from instagram:tagged, more metadata and directory type from iwara, comment metadata from reddit
Full changelog

Extractors

Additions

  • [chevereto] support imglike.com (#5179)
  • [chevereto] add category extractor (#5179)
  • [Danbooru] add random extractor (#8270)
  • [hdoujin] add support (#6810)
  • [imgpile] add support (#5044)
  • [mangadex] add covers extractor (#4994)
  • [mangataro] add support (#8237)
  • [thehentaiworld] add support (#274 #8237)

Fixes

  • [4archive] fix TypeError (#8217)
  • [bellazon] fix video attachments (#8239)
  • [bunkr] fix JSONDecodeError for files with URL slugs containing apostrophes ' (#8150)
  • [instagram] ensure manifest data exists before attempting a DASH download (#8267)
  • [schalenetwork] fix extraction (#6948 #7391 #7728)
  • [twitter] fix quoted Tweets being marked as deleted (#8225)

Improvements

  • [2ch] update domain to 2ch.su, support 2ch.life URLs (#8216)
  • [bellazon][simpcity][vipergirls] process threads in descending order (#8248)
  • [bellazon] extract inline images (##8247)
  • [bellazon] support video embeds (#8239)
  • [bellazon] support #comment-12345 post links (#8239)
  • [lensdump] support new direct file URL pattern (#8251)
  • [simpcity] extract URLs of <iframe> embeds (#8214 #8256)
  • [simpcity] improve post content extraction (#8214)

Metadata

  • [facebook] extract biography metadata (#8233)
  • [instagram:tagged] provide full tagged_… metadata when using id:… URLs (#8263)
  • [iwara] extract more metadata (#6582)
  • [iwara] make type available for directories (#8245)
  • [reddit] provide comment metadata for all media files (#8228)

Options

  • [bellazon] add quoted option (#8247)
  • [bellazon] implement order-posts option (#8248)
  • [kemono:discord] implement order-posts option (#8241)
  • [simpcity] implement order-posts option (#8248)
  • [vipergirls] implement order-posts option (#8248)

Downloaders

  • [ytdl] fix errors caused by deprecated options removal

Post Processors

  • [metadata] add "mode": "print" (#2691)
  • [python] add "mode": "eval"
  • close archive database connections (#8243)

Miscellaneous

  • [util] define __enter__ & __exit__ methods for NullResponse objects (#8227)
  • [util] extend list of ISO 639 language codes
v1.30.7 New feature
Notable features
  • Added support for extracting media from bellazon, cyberfile, and simpcity sites
  • Enhanced fansly extractor: added `creator-media` endpoint, improved format selection, and fixed handling of posts with more than five files
Full changelog

Extractors

Additions

  • [bellazon] add support (#7480)
  • [cyberfile] add support (#5015)
  • [fansly] add creator-media extractor (#4401)
  • [simpcity] add support (#3127 #5145 #5879 #8187)

Fixes

  • [aibooru] fix download URLs (#8212)
  • [ao3] fix pagination (#8206)
  • [boosty] fix extracting accessToken from cookies (#8203)
  • [comick] update buildId on 404 errors (#8157)
  • [facebook] fix /photo/?fbid=…&set=… URLs being handled as a set (#8181)
  • [fansly] fix & improve format selection (#4401)
  • [fansly] fix posts with more than 5 files (#4401)
  • [imgbb] fix & update (#7936)
  • [tiktok] fix KeyError: 'author' (#8189)

Improvements

  • [comick] handle redirects
  • [fansly] provide fallback URL for manifest downloads (#4401)
  • [fansly:creator] support custom wall IDs (#4401)
  • [tungsten:user] support filtering results by tag (#8061)
  • [twitter] continue searches on empty response (#8173)
  • [twitter] implement various search-… options (#8173)

Miscellaneous

  • [formatter] exclude <>\ characters from !R results (#8180)
  • [formatter] support negative indices
  • [util] emit debug Proxy Map logging message (#8195)
v1.30.6 Bug fix
Notable features
  • Added video extractor for chevereto
  • Added covers extractor for comick
  • Added fansly support
Full changelog

Extractors

Additions

  • [chevereto] add video extractor (#8149)
  • [comick] add covers extractor
  • [fansly] add support (#4401)
  • [instagram] add stories-tray extractor (#6582)
  • [shimmie2] support co.llection.pics (#8166)
  • [tungsten] add support (#8061)
  • [vk] add wall-post extractor (#474 #6378 #8159)

Fixes

  • [bunkr] fix downloading albums with more than 100 files (#8150 #8155 #8175)
  • [chevereto:user] fix names starting with an a (#8149)
  • [common] prevent exception when using empty user-agent (#8116)
  • [deviantart:search] fix extraction (#8083)
  • [hentaifoundry:story] fix src & description extraction (#8163)
  • [imagebam] update guard page bypass cookies (#8123)
  • [kemono] fix .bin archive files not being added to archives list (#8156)
  • [reddit] fix TypeaError when processing comments (#8139)
  • [tumblr] fix pagination when using date-max
  • [twitter] prevent exceptions in _transform_community() (#8134)
  • [twitter] prevent KeyError: 'name' in _transform_user() (#8154)
  • [twitter] fix KeyError: 'core' when processing communities (#8141)
  • [zerochan] fix 500 Internal Server Error during login (#8097 #8114)

Improvements

  • [comick] detect broken chapters (#8054)
  • [erome] handle reposts on user profiles (#6582)
  • [instagram] improve video quality warning regex (#8078)
  • [jpgfish] update domain to jpg6.su
  • [reddit] add api & limit options (#7997 #8012 #8092)
  • [reddit] support video embeds (#8139)
  • [tumblr:tagged] support /archive/tagged/ URLs (#8160)

Metadata

  • [khinsider] extract description metadata
  • [tumblr:tagged] provide search_tags metadata (#8160)
  • [vk] parse date & description metadata (#8029)
  • [vk:album] extract more metadata (#8029)

Downloaders

  • [ytdl] implement _ytdl_manifest_cookies

Miscellaneous

  • [formatter] add R conversion - extract URLs (#8125)
  • [options] add -a as short option for --user-agent
  • [scripts/init] implement -s/--subcategory
v1.30.5 Breaking risk
Breaking changes
  • Removed [zzup] module (#4604)
  • [shimmie2] removed support for `sizechangebooru.com` (#7667)
Notable features
  • [twitter] added `highlights` extractor
  • [twitter] added `home` extractor
  • [civitai:search] added `token` option
Full changelog

Extractors

Additions

  • [shimmie2] support noz.rip/booru (#8101)
  • [sizebooru] add support (#7667)
  • [twitter] add highlights extractor (#7826)
  • [twitter] add home extractor (#7974)

Fixes

  • [aryion] fix pagination (#8091)
  • [rule34] support using api-key & user-id (#8077 #8088 #8098)
  • [tumblr:search] fix ValueError: not enough values to unpack (#8079)
  • [twitter] handle KeyError: 'result' for retweets (#8072)
  • [zerochan] expect 500 Internal Server Error responses for HTML requests (#8097)

Improvements

  • [civitai:search] add token option (#8093)
  • [instagram] warn about lower quality video downloads (#7921 #8078)
  • [instagram] remove candidates warning (#7921 #7989 #8071)
  • [oauth] improve error messages (#8086)
  • [pixiv] distinguish empty from deleted profiles (#8066)
  • [twitter] update API endpoint query hashes & parameters

Metadata

  • [batoto] extract more metadata (#7994)
  • [instagram:highlights] extract author & owner & user metadata (#7846)
  • [newgrounds] extract slug metadata (#8064)
  • [twitter] extract community metadata (#7424)

Removals

  • [shimmie2] remove sizechangebooru.com (#7667)
  • [zzup] remove module (#4604)

Downloaders

  • [ytdl] improve playlist handling (#8085)

Scripts

  • implement rm helper script
  • add -g/--git command-line options
  • [util] add git() & lines() helper functions

Miscellaneous

  • [config] add conf argument to config.load() (#8084)
v1.30.4 Bug fix
Notable features
  • [civitai] add `videos` extractor
  • [newgrounds] fallback for images with empty `full_image_text` src
Full changelog

Extractors

Additions

  • [civitai] add videos extractor (#6644)

Fixes

  • [civitai] fix posts not returning video files (#8053)
  • [civitai] fix 403 Forbidden errors for searches
  • [kemono] send Accept: text/css header for API requests (#8047 #8057)

Improvements

  • [newgrounds] add fallback for images with empty full_image_text src

Miscellaneous

  • fix accessing methods through path-metadata proxy (#6582)
v1.30.3 Mixed
Notable features
  • Added extractors for booth, civitai (collection & user-collections), facebook info & albums, imgdrive image, imgtaxi image, imgwallet image, picstate image, silverpic image, tumblr following & followers, xasiat support
  • Improved Instagram download warning about lower quality images and added `include` option for skeb
  • Implemented common "user-agent": "@BROWSER" setting and path-convert option
Full changelog

Extractors

Additions

  • [booth] add support (#7920)
  • [civitai] add collection & user-collections extractors (#8005)
  • [facebook] add info extractor (#6582)
  • [facebook] add albums extractor (#7848)
  • [imgdrive] add image extractor (#7976)
  • [imgtaxi] add image extractor (#8019)
  • [imgwallet] add image extractor (#8021)
  • [picstate] add image extractor (#7946)
  • [silverpic] add image extractor (#8020)
  • [tumblr] add following & followers extractors (#8018)
  • [xasiat] add support (#4161 #5929 #7934)

Fixes

  • [blogger] fix video extraction (#7892)
  • [comick] handle chapters without chapter data (#7972)
  • [comick] handle volume-only chapters (#8043)
  • [comick] fix exception when filtering by translation group (#8045)
  • [deviantart:tiptap] fix KeyError: 'attrs' (#7929)
  • [everia] fix image extraction (#7973 #7977)
  • [facebook] fix avatar extraction for empty profiles (#7962)
  • [facebook] handle profiles without photos or set_id (#7962)
  • [fappic] rewrite thumbnail URLs (#8013)
  • [idolcomplex] update to new domain and interface (#7559 #8009)
  • [kemono][coomer] fix extraction (#8028 #8031)
  • [kemono] update /creators endpoint (#8039 #8040)
  • [kemono] don't set error status for posts without comments (#7961)
  • [pixiv] fix IndexError for unviewable works (#7940)
  • [pixiv] fix artworks downloads when using expired cookies (#7987)
  • [scrolller] fix NSFW subreddit pagination (#7945)
  • [twitter] fix potential UnboundLocalError when videos are disabled (#7932)
  • [vsco] disable TLS 1.2 cipher suites by default (#7984 #7986)
  • [wikimedia:wiki] fix AttributeError: 'subcategories' (#7931)

Improvements

  • [aibooru] support general.aibooru.online & aibooru.download
  • [comick] add lang option (#7938)
  • [hentaifoundry] add descriptions option (#7952)
  • [facebook] raise AuthRequired for profiles requiring cookies (#7962)
  • [instagram] warn about lower quality image downloads (#7921)
  • [kemono] support "endpoint": "posts+" for full metadata (#8028)
  • [misskey] support misskey.art (#7923)
  • [motherless] detect 404/File not found pages
  • [pixiv] detect suspended/deleted accounts (#7990)
  • [pixiv] improve API error messages
  • [pixiv] remove redundant cookies initialization code
  • [scrolller] limit title length in default filenames
  • [skeb] implement include option (#6558 #7267)
  • [vk] update default archive_fmt (#8030)

Metadata

  • [cien] provide author[id] metadata (#6582)
  • [dankefuerslesen] extract more metadata (#7915)
  • [dankefuerslesen:manga] fix metadata being overwritten
  • [facebook] ensure numeric user_id values (#7953)
  • [facebook:set] fix/improve user_id extraction (#7848)
  • [fappic] fix filename values

Common

  • [common] implement "user-agent": "@BROWSER" (#7947)
  • [common] improve error message for non-Netscape cookie files (#8014)

Downloaders

  • [ytdl] don't overwrite existing filename data (#7964)

Miscellaneous

  • [docs/configuration] improve client-id & api-key instructions
  • [docs/formatting] update and improve
  • [job] apply extension-map to SimulationJob results (#7954)
  • [job] improve URL scheme extraction performance
  • [job] split collected DataJob results
  • [path] implement path-convert option (#493 #6582)
  • [scripts] improve and extend init, generate_test_result, and pyprint
  • extend -A/--abort & "skip": "abort" functionality (#7891)
  • use more f-strings (#7671)
v1.30.2 Bug fix
Notable features
  • Added `posts` and `bookmarks` extractors for itaku (#7707)
  • Supported new domains kemono.cr, coomer.st in respective extractors
Full changelog

Extractors

Additions

  • [itaku] add posts & bookmarks extractors (#7707)

Fixes

  • [kemono] support new kemono.cr domain (#7902 #7909 #7911 #7913 #7904)
  • [coomer] support new coomer.st domain (#7907 #7909 #7911 #7904)

Post Processors

  • [exec] use False as start_new_session default to avoid a TypeError (#7899)

Miscellaneous

  • [tests/postprocessor] fix TypeError when logging an error (#6582)
v1.30.1 Breaking risk
Breaking changes
  • Snap base migrated from core20 to core22 (#7841)
  • YouTube downloader switched from youtube-dl to yt-dlp (#7865)
Notable features
  • Added Jinja template support in Formatter
  • Added `--sleep-429` command‑line option for rate‑limit handling
Full changelog

Extractors

Additions

  • [civitai] add generated extractor (#7796)
  • [facebook] add avatar extractor (#7848)
  • [imgadult] add image extractor (#7893)
  • [itaku] add following & followers extractors (#7707)
  • [leakgallery] add support (#7872)
  • [madokami] add manga extractor (#7828)

Changes

  • [civitai] change default user includes to ["user-images", "user-videos"] (#7874)

Fixes

  • [behance] fix 403 Forbidden errors by using "browser": "firefox" (#7803 #7877)
  • [civitai] fix AttributeError when a file's post was deleted (#7860)
  • [pornhub] fix gallery extractor (#7842)
  • [readcomiconline] force One page reading mode (#7890)
  • [sexcom] update search extractor (#7807)
  • [urlgalleries] fix extraction (#7858)
  • [wikimedia] add missing self argument when calling prepare() (#7835)

Improvements

  • [4chan] detect files containing only null bytes (#7883)
  • [azurelanewiki] prevent Anubis challenge
  • [bilibili] warn about blocked articles (#7880)
  • [civitai] fix extension for videos without name and mimeType
  • [common] detect Cloudflare & DDoS-Guard challenge pages in request_json() & request_xml() (#7833)
  • [facebook] add retries to profile page requests (#7725 #7834 #7852)
  • [facebook] implement include option (#7848)
  • [itaku] implement include option (#7707)
  • [patreon] implement cursor support (#7856)
  • [patreon] support date-max for /home URLs (#7856)
  • [pixiv] improve AJAX error messages (#7896)

Metadata

  • [behance] provide creator[name] metadata (#7885)
  • [civitai] ensure file & post data has a date value (#7548)
  • [inkbunny] enable pool metadata (#7850)
  • [nhentai] provide gallery_id for pagination results (#7868)

Downloaders

  • [ytdl] add deprecations option

Post Processors

  • [exec] add session option (#6582)

Snap

  • migrate base to core22 (#7841)
  • switch to yt-dlp (#7865)
  • fix deprecated CRAFT_ARCH_TRIPLET usage (#7866)

Formatter

  • add Jinja template support (#1390)
  • add W conversion - sanitize whitespace (#6582)

Miscellaneous

  • [actions] fix parse_logging import (#7837)
  • [options] add --sleep-429 command-line option (#7871)
  • [scripts] ensure files use utf-8 encoding and \n newlines (#7872)
  • [tests/extractor] improve example URL mismatch error message (#7872)
  • [tests/results] fix #log checks for URLs raising exceptions
  • fix exit status for requests' JSONDecodeError (#4380)
  • use walrus operators := in if statements (#7671)
v1.30.0 Breaking risk
Breaking changes
  • Minimum supported Python version increased to 3.8
Full changelog

Changes

  • raise minimum supported Python version to 3.8 (#7671)
  • update extractor names (#7746 #7612)
    • | Old | New |
      |------------------------|------------------------|
      | kemonoparty | kemono |
      | coomerparty | coomer |
      | koharu | schalenetwork |
      | naver | naver-blog |
      | chzzk | naver-chzzk |
      | naverwebtoon | naver-webtoon |
      | pixiv:novel | pixiv-novel:novel |
      | pixiv:novel-user | pixiv-novel:user |
      | pixiv:novel-series | pixiv-novel:series |
      | pixiv:novel-bookmark | pixiv-novel:bookmark |
    • config settings will automatically use the old values
    • target directories using {category} will use the new category names by default
    • use --compat or "category-map": "compat" to restore old category names
  • include exit status bitmasks of NotFoundError (8) and NoExtractorError (64)
    into general HttpError (4) and InputError (32) respectively

Extractors

Additions

  • [civitai] add search-images and posts extractors (#7609)
  • [comick] add support (#1825 #6782)
  • [dankefuerslesen] add support (#7669)
  • [dynastyscans] add anthology extractor (#7627)
  • [girlsreleased] add support (#6200)
  • [girlswithmuscle] add support (#4493 #6016)
  • [iwara] add support (#2652 #5840 #7785)
  • [kemono] add artists extractor (#7582)
  • [misskey] add avatar, background, and info extractors (#5347)
  • [motherless] add group extractor (#7774 #7787)
  • [naver-chzzk] add comment and community extractors (#7735 #7741)
  • [nudostar] add support (#5735 #6556)
  • [rawkuma] add support (#4571)
  • [redbust] add support (#6759 #6918 #7043)

Fixes

  • [4archive] fix thread extractor
  • [arcalive] fix download URLs (#7678)
  • [arcalive] replace ac-p.namu subdomains with ac-o.namu (#7556)
  • [archivedmoe] fix redirection issue (#7652 #7653 #7664)
  • [aryion] fix favorite extractor (#7775)
  • [batoto] fix downloading manga with alerts/notices (#7657)
  • [behance] fix 403 Forbidden errors (#7710)
  • [bunkr] fix file downloads (#7747)
  • [civitai] fix & update search extractor (#7609)
  • [danbooru] fix Ugoira conversions for posts without ZIP:ZipFileName (#7630)
  • [deviantart:tag] fix username (#7587)
  • [deviantart:tiptap] fix TypeError when textAlign is null (#7639)
  • [directlink] fix config lookups by subcategory (#6582)
  • [discord] support forwarded messages & handle missing threads (#7706 #7722)
  • [furaffinity] fix submissions results (#7759)
  • [hitomi] fix negative tag searches (#7694)
  • [kemono] fix tagged creator posts
  • [mangadex:list] fix config lookups for list-feed subcategory
  • [nijie] fix file extraction (#7624)
  • [paheal] fix 404 Not Found error for tags with URL encoded characters (#7642)
  • [patreon] send Referer header when downloading .m3u8 videos (#7571)
  • [patreon] fix campaign_id extraction from Next.js 13 creator pages (#7773)
  • [readcomiconline] fix extraction (#7606 #7789)
  • [reddit] fix archive IDs of fallback files (#7760)
  • [rule34] fix file downloads (#7697)
  • [sankaku] fix extracting extended tag categories (#7744)
  • [sexcom] prevent .css file downloads (#7632)
  • [skeb] fix KeyError - 'frame_rate' (#7798)
  • [tiktok] handle exceptions when extracting avatars (#7682)
  • [vsco] fix JSON returned by VSCO (#7821)
  • [warosu] HTML attribute fix (#7676 #7677 #7777)

Improvements

  • [artstation] support downloading .mview files (#7812)
  • [civitai] support "My Reactions" results for videos (#7608)
  • [e621] support e621.cc/posts URLs (#6809)
  • [erome] restructure extractor hierarchy (#7804)
  • [everia] prevent redirect when fetching post pages
  • [exhentai] ensure file signature bytes aren`t all zero (#4902)
  • [exhentai] implement "source": "metadata" (#4902)
  • [fanbox] return fileMap files in order (#2718)
  • [gelbooru] improve error message for 401 Unauthorized responses (#7674)
  • [imagevenue] detect 404 image files (#7570)
  • [instagram] provide more descriptive URLs for video_dash_manifest videos (#7631)
  • [pinterest] support pin.it redirects to board (#7805)
  • [pinterest] match board URLs with query strings (#7805)
  • [rule34us] prioritize video.rule34.us for video downloads (#6582)
  • [rule34xyz] implement login with username & password (#7736)
  • [sankaku] allow passing cookies (#7333)
  • [sexcom] support /pics/ URLs (#7611)
  • [tiktok] detect login page redirects (#7716)
  • [vk] detect challenge page redirects (#7650)
  • [vk] prevent 404 Not Found errors for file downloads
  • [vk] add continuation message (#7650)
  • [warosu] detect missing images by checking hostname (#7698 #7699)
  • [ytdl] set domain as subcategory when using Generic extractor (#6582)

Metadata

  • [civitai] always provide file[…] metadata (#7548)
  • [everia] improve filename by unquoting URLs (#7620)
  • [fanbox] extract archives metadata (#7454)
  • [gelbooru_v02] extract total/search_count metadata (#7689)
  • [instagram] provide post_url for stories and highlights (#7810)
  • [kemono:discord] update server & channel metadata (#7569)
  • [mangaread] fix manga_alt metadata
  • [newgrounds] filter <script> content in tags (#7604)
  • [patreon] return metadata for paywalled posts (#6582)
  • [pinterest] remove excess whitespace from description fields (#4335)
  • [pixiv] remove /jump.php from caption links (#4327)
  • [tenor] extract more metadata
  • [twitter] extract source_id and source_user metadata (#7470 #7640)
  • [twitter] extract sensitive_flags metadata (#2523)
  • [vk] fix user metadata extraction

Options

  • [civitai] add option to retrieve post metadata (#7548)
  • [exhentai] add limits-action option (#6504)
  • [fanbox] add fee-max option (#7726)
  • [kemono] extend duplicates option (#7696)
  • [mangadex] allow ratings to be a (comma-separated) string (#7799)
  • [misskey] add include option (#5347)
  • [sankaku] remove id-format option (#5073 #6808)
  • [webtoons] add banners and thumbnails options (#6468 #7441)

Common

  • update browser User-Agents and headers
  • allow using predefined Firefox/Chrome headers & ciphers
  • allow overriding user-agent when browser is used (#7647)
  • support using system certificates via truststore (#6582)
  • fix URLs not getting written to -e/--error-file (#7758)
  • raise ChallengeError for Cloudflare & DDoS-Guard challenge pages (#1945)
  • prevent exceptions for for non-fatal requests (#7598)
  • simplify user extractors by using Dispatch mixin
  • allow GalleryExtractor instances to return additional asset files

Removals

  • [mangasee] remove module

Downloaders

  • support dynamic download rate limits (#7638)
  • [http] fail downloads with HTML content (#4798 #7697)
  • [http] add MIME type and signature check for .html files
  • [http] fix potential FileExistsError when .part file moved (#5385)
  • [http] implement _http_signature checks (#4902)
  • [ytdl] fix KeyError - 'filepath' when using legacy youtube_dl (#6949 #7752 #7824)
  • [ytdl] fix postprocessing/merge errors (#7581)
  • [ytdl] detect yt-dlp independent of module name (#7599)
  • [ytdl] support custom headers when fetching HLS/DASH manifests

Post Processors

  • implement shortcuts for mode and event options (e.g. metadata/jsonl@post)
  • [exec] implement commands option

Options

  • add category-map and config-map (#7612)
  • add signals-actions (#1861 #6582)
  • add --compat command-line option
  • add --Print command-line option
  • swap --print and --Print semantics

Cookies

  • add native support for LibreWolf profiles (#4101 #7625)
  • improve cookie-related logging messages
  • update expired cookie messages (#7644)

Formatter

  • add D conversion - ISO 8601 string to datetime
  • add L conversion - ISO 639-1 code to language name
  • change old L/length conversion to n
  • implement M format specifier

Optimizations

  • replace %-formatted and .format(…) strings with f-strings (#7671)
  • improve regular expression usage
  • replace match.group(N) with match[N] (#7671)
  • update match.lastindex usage
  • remove pre-3.8 workarounds (#7671)
  • remove @staticmethod decorators
  • add request_json() and request_xml() functions
  • slightly improve performance of extract functions
  • slightly improve filter performance

Miscellaneous

  • [actions] add flag and raise actions
  • [job] refactor parent-child config path building (#7527)
  • [job:data] wrap exceptions in a dict (#7723)
  • [path] support character sequences in path-restrict replacements (#1707)
  • [pyinstaller] exclude pkg_resources module (#7592)
  • [scripts/init] add scripts to generate initial extractor code and test results
  • [scripts/options] make output width independent of terminal size
  • fix Last-Modified mtime overwriting post processor mtime (#7529)
  • use pip for make install (#7628)

Beta — feedback welcome: [email protected]