Commit Graph

7654 Commits

Author SHA1 Message Date
Mike Fährmann
7e513f35f2 [wikimedia] use 'gallery-dl/<version>' User-Agent (#8770 #8861) 2026-01-10 18:08:13 +01:00
Mike Fährmann
76930ad44c [saint] support 'turbovid.cr' URLs (#8851) 2026-01-10 18:08:13 +01:00
Mike Fährmann
bb7d540c7a [xenforo] add 'media-category' extractor (#8785) 2026-01-10 18:08:05 +01:00
Mike Fährmann
32e95f403c [xenforo:media] fix '403 Forbidden' with enabled 'metadata' (#8785)
https://github.com/mikf/gallery-dl/issues/8785#issuecomment-3732116455
2026-01-10 09:25:25 +01:00
Mike Fährmann
60104f20af [xenforo] implement 'media' support (#8785)
add 'media-user' and 'media-item' extractors
TODO: 'media-category' extractor (?)
2026-01-09 21:21:19 +01:00
Mike Fährmann
fe1fc5da12 [furaffinity:favorite] support URLs with custom start position 2026-01-09 18:02:10 +01:00
Mike Fährmann
7a2f15348f [imagetwist:gallery] extract 'gallery_title' & 'gallery_id' metadata 2026-01-09 15:37:57 +01:00
Mike Fährmann
1e2a2c258c [imagetwist:gallery] support 'page' URLs (#8826) 2026-01-09 10:41:28 +01:00
Mike Fährmann
be23e164b7 [shopify] support URLs starting with language codes 2026-01-08 19:00:03 +01:00
Mike Fährmann
5b8627a646 [imagetwist:gallery] support multiple pages (#8826) 2026-01-07 21:39:19 +01:00
m154k1
de85878bb5 [update] fix User-Agent (#8836)
fixes regression introduced in a28fbbc3c6
2026-01-07 20:04:18 +01:00
Mike Fährmann
b1a708beb9 [weibo:album] implement 'subalbum' support (#8792)
https://weibo.com/u/USER?tabtype=album-1
https://weibo.com/u/USER?tabtype=album-NAME
https://weibo.com/u/USER?tabtype=album-all
https://weibo.com/u/USER?tabtype=album-only
2026-01-07 19:23:54 +01:00
Mike Fährmann
d491ed8ed8 [tests/results] defer formatter creation 2026-01-07 19:23:54 +01:00
Mike Fährmann
1c56d961fa [tests/results] add URL as message for child extractor tests 2026-01-07 19:23:54 +01:00
Mike Fährmann
869f601eb7 [bellazon] unescape 'thread[slug]' metadata 2026-01-07 19:23:54 +01:00
Mike Fährmann
88732321ad [bellazon] match thread URLs with escaped characters 2026-01-07 19:23:54 +01:00
Mike Fährmann
775e2d6821 [bellazon] use 'data-full-image' URLs if available (#8833) 2026-01-07 19:23:45 +01:00
Mike Fährmann
6cc7153b6c [webtoons] extend 'bgm' option (#8733)
allow remuxing bgm audio into a different format/container
2026-01-06 21:53:16 +01:00
Mike Fährmann
3c0509e80c [dl:ytdl] implement '_ytdl_manifest_remux' 2026-01-06 21:53:16 +01:00
Mike Fährmann
223779f456 [tests/results] add workaround for 'identity' format fields 2026-01-06 21:53:16 +01:00
Mike Fährmann
0b3258430f [tests/results] fix lists for multi-vslue checks 2026-01-06 21:53:16 +01:00
Mike Fährmann
cf96fc6ebe [koofr] refactor (#8803)
https://github.com/mikf/gallery-dl/issues/8803#issuecomment-3708215475
https://github.com/mikf/gallery-dl/issues/8803#issuecomment-3708358606

- add 'recursive' option, remove 'zip'
- recurse into subdirectories
- add 'path' metadata
- remove 'count' & 'num' metadata
- update default directory & archive format
2026-01-06 21:52:58 +01:00
Mike Fährmann
706fb752c6 [imagevenue] fix 'NotFoundError' for valid image links (#8818) 2026-01-05 10:08:05 +01:00
Mike Fährmann
18edb03a24 [docs/README] add Discord link 2026-01-05 10:07:45 +01:00
Mike Fährmann
a40dfc58d7 [fanbox] make 'comments' extraction non-fatal (#8814)
and fix a typo
2026-01-04 16:54:21 +01:00
Mike Fährmann
8e855bd810 replace '// 1000' with '/ 1000' for timestamp conversions
regular division is slightly faster than floor division
and a float timestamp value is treated the same as an integer one
2026-01-04 16:51:31 +01:00
Mike Fährmann
2cfe2b3b04 [common] implement '"user-agent": "+PRESET"'
support using a 'User-Agent' header preset, e.g. "+firefox"
2026-01-03 21:07:45 +01:00
Mike Fährmann
c745a57bd7 [dankefuerslesen] extend URL pattern (#8811)
- https://danke.moe/read/manga/MANGA/
- https://danke.moe/read/series/MANGA/
- https://danke.moe/reader/manga/MANGA/
- https://danke.moe/reader/series/MANGA/
2026-01-03 13:19:20 +01:00
Mike Fährmann
a28fbbc3c6 [util] rename 'USERAGENT' to 'USERAGENT_GALLERYDL' 2026-01-03 10:31:48 +01:00
Mike Fährmann
e33a63231f [util] adjust Firefox/Chrome UA versions
modify 'ordinal' offsets to get the correct version numbers
2026-01-03 10:31:32 +01:00
Mike Fährmann
02aab26a17 release version 1.31.2 2026-01-02 19:32:54 +01:00
Mike Fährmann
44c2408904 [tiktok] update user ID extraction 2026-01-01 22:28:21 +01:00
Mike Fährmann
2a342e4b1a [tiktok] combine '…_id' fields into a single 'file_id' one (#8804)
add a proper 'file_id' value for 'video' files
2026-01-01 21:49:09 +01:00
Mike Fährmann
fcf6f05a0d [koofr] implement 'zip' option (#6582 #8700)
Download individual files instead of '.zip' bundle by default.

https://github.com/mikf/gallery-dl/issues/6582#issuecomment-3679504391
2026-01-01 19:13:31 +01:00
Benjamin Vergnaud
3b316c857f [bunkr] detect new maintenance video file (#8802)
* fix(bunkr): catch new maintenance video file during validation

Bunkr has performing a large scale maintenance recently, and I've
noticed that I would on occasion download a file only to get
a short server is in maintenance video instead of the intended file.

Debug logs show the filename for the maintenance video has changed:
[urllib3.connectionpool][debug] Starting new HTTPS connection (1): 3d09xl1.b-cdn.net:443
[urllib3.connectionpool][debug] https://3d09xl1.b-cdn.net:443 "GET /c4f36040-bdd1-40b6-aea1-034dfbe88ba2/maint.mp4 HTTP/1.1" 200 322509

This commit fixes the detection of that file to properly send the
"File server in maintenance mode" warning instead of downloading an
unintended file.

Signed-off-by: Benjamin VERGNAUD <ben@bvergnaud.fr>

* check multiple suffixes with one 'endswith()' call

---------

Signed-off-by: Benjamin VERGNAUD <ben@bvergnaud.fr>
2026-01-01 15:53:07 +01:00
Mike Fährmann
5e94bae906 [pixiv] support 'sketch' include (#8789) 2026-01-01 10:49:41 +01:00
Mike Fährmann
4e56be4def [pixiv] provide 'count' metadata (#8794) 2026-01-01 10:15:04 +01:00
Mike Fährmann
b1cae08507 [instagram] don't warn on minor size differences (#8300)
only emit a warning with 'warn-images' if the reported original size
is at least 10% smaller then the size of the returned image
2026-01-01 09:54:07 +01:00
Mike Fährmann
9b6b8deb9e [weibo] fix 'article' include (#8792) 2025-12-31 19:05:11 +01:00
Mike Fährmann
8792d7faea [whyp] add support (#8725) 2025-12-31 18:58:33 +01:00
Duy NGUYEN
2087730b75 [batoto] replace k-subdomain image URLs with n-subdomain (#8791)
* [batoto] replace k-subdomain image URLs with n-subdomain
    Update tests to use battwo.com proxy domain and current metadata
* [batoto] revert to list comprehension
2025-12-31 16:32:03 +01:00
Mike Fährmann
add9fbc13b [manganelo] add 'bookmark' extractor (#8776) 2025-12-31 11:06:08 +01:00
Mike Fährmann
9ff3cc4a8e [xenforo] fix incomplete video URLs (#8786) 2025-12-31 10:48:51 +01:00
Mike Fährmann
2a629fd653 [xenforo] support '/#post-ID' URLs 2025-12-31 10:43:53 +01:00
Mike Fährmann
239de3f092 [civitai] update 'quality-videos' default (#8787)
from "quality=100" to "original=true,quality=100"
to prevent a server timeout / error
2025-12-31 09:56:39 +01:00
Mike Fährmann
c91052f257 [tapas] unescape HTML entities in image URLs (#8790) 2025-12-31 08:47:37 +01:00
Mike Fährmann
51c155df94 [yourlesbians] add 'album' extractor (#8713) 2025-12-30 20:33:50 +01:00
Mike Fährmann
a97c320a38 [sankaku] fix re-authentication (#8779)
Unset the `Authorization` header before performing a re-login
2025-12-30 17:25:24 +01:00
CasualYouTuber31
a6c845bdc8 [tiktok] remove yt-dlp dependency & add support for more post types (#8715)
#7246 #8035 #8466 #8730

* [tiktok] support extracting videos directly without yt-dlp
* [tiktok] support extracting users directly without yt-dlp
* [tiktok] fixing logic, tests, linting errors
* [tiktok] implement tiktok-range support for non-yt-dlp user extractor
* [tiktok] Skip range filter if no ranges are given
* [tiktok] Remove debug code
* [tiktok] only check for faulty device IDs during the first couple of passes
    I think the original yt-dlp solution assumes that if a device ID works once, it will always work.
    Plus, my approach would cause needless retries in certain cases if hasMorePrevious does end up being wrong like the original algorithm accounts for. So let's copy the original algorithm here, too.
* [tiktok] support stories
* [tiktok] you can now extract audio without extracting photos
* [tiktok] add TiktokFollowingExtractor
* [tiktok] update supportedsites to include stories
* [tiktok] Keep tiktok-range option for no content user account test
    It acts as a nice guard against that account suddenly having lots of posts to extract
* [tiktok] TiktokUserExtractor and TiktokFollowingExtractor rewrite
* [tiktok] Fix avatar naming convention to match that of posts
* [tiktok] remove type hints for compatibility with older Python versions
* [tiktok] Improve performance of TiktokFollowingExtractor
    This was largely achieved using the story/batch/item_list endpoint
* [tiktok] Forgot to run flake8
* [tiktok] remove old constant
* [tiktok] Support order-posts config item
* [tiktok] flake8
* [tiktok] Older Python versions don't support match
* [tiktok] always ask for posts in chronological order when in "desc" mode
    We should aim to avoid having pinned posts returned before non-pinned ones
* [tiktok] Add liked posts extraction
* [tiktok] Add reposts extraction
* [tiktok] Add saved posts extraction

* cleanup imports
* remove '# MARK:' comments
* remove & simplify 'except' statements
    KeyboardInterrupt & SystemExit inherit from BaseException (not Exception)
    and therefore don't need special handling
* split 'user' extractor
* move PATTERNs into their respective functions
* use dict comprehensions
* add only-matching test URLs for split user extractors
* update config docs
    rename 'tiktok-user-extractor' to 'ytdl'
* document '"popular"' 'order-posts' value
* inline and remove 'util.chunk()'
2025-12-30 17:17:57 +01:00
Mike Fährmann
c8c4575c7f [dl:http] add MIME type and signature for .aac files 2025-12-29 19:05:34 +01:00