Skip to content

Release history

gallery-dl releases

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

All releases

31 shown

No immediate action
v1.32.8 New feature

Extractors, Fixes, Utilities

No immediate action
v1.32.7 Mixed

Extractors + Fixes + Cookie paths

No immediate action
v1.32.6 New feature

New extractors + utility updates

No immediate action
v1.32.5 New feature

Extractors & Cookies updates

No immediate action
v1.32.4 Breaking risk

pawchive added, cfake removed, utilities updated

Review required
v1.32.3 New feature
Auth

Extractor & utility improvements

No immediate action
v1.32.2 New feature

shareimage extractor + many fixes + fmt.py

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]