惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
小众软件
小众软件
爱范儿
爱范儿
Y
Y Combinator Blog
博客园 - Franky
美团技术团队
博客园 - 【当耐特】
The Cloudflare Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
Jina AI
Jina AI
IT之家
IT之家
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
大猫的无限游戏
大猫的无限游戏
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 聂微东
WordPress大学
WordPress大学
V
Visual Studio Blog
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
有赞技术团队
有赞技术团队

mephisto.cc

修复rime-ice无法弹出候选框的问题 开机滚动字体显示优化 个人网站安全防护 树莓派上部署Vaultwarden 使用goaccess实时分析Caddy日志 个人网站监控 Hugo全站AVIF记 Linux下尝试使用Godot开发小游戏 Arch linux dae 透明代理 Airflow接管galler-dl下载任务 Arch核显下如何愉快玩Dota2和CS2 Arch/labwc 环境网络相关设置 Rime添加dota2词库 Arch 重装记录 Supertuxkart iOS版终于发布了 打造自己的流媒体音乐服务 剪切板管理工具clipcat推荐 MangoHud性能监控 微信小程序开发记 Rofi试用 解决Arch下VSCode无法输入中文的问题 独立窗口管理器下无法录屏问题处理 上海市二手房成交数据监控 OpenLDAP监控 Arch linux如何顺畅连接蓝牙设备 使用Git和Ansible管理配置文件 Arch Linux SSL VPN 客户端配置 简单获取celery任务实时结果 Arch linux下iNode客户端的安装和使用方法 券商费率调整记
如何使用gallery-dl批量下载图像
2025-12-31 · via mephisto.cc

假设你是个追星粉、或者单纯迷恋特特上的某个女菩萨、或者是个无限循环播放乔丹视频的球迷、或者单纯为了学习知识,丰富课外业余生活。那么你一定会有批量下载图片(包含视频)的需求,别告诉我你是挨个点的。

以前我这种需求不是很强烈,直到有一天我发现某个喜欢的人退网了,可能是被封杀,也有可能是号卖了,或者单纯不玩了。

这个时候,总是让人后悔没事前多下载点东西保存。

gallery-dl 就是个不错的图片下载工具。

且看下面的实践教程:

1. 安装

我用的 Arch linux,直接 paru 安装。

非常简单直接,别的发行版,或者操作系统,请看官方仓库 https://github.com/mikf/gallery-dl 说明。

2. 配置示例

以推特为例

 1➜  ~ cat .config/gallery-dl/config.json
 2{
 3  "extractor": {
 4    "base-directory": "~/Pictures/",
 5    "twitter": {
 6      "videos": true,
 7      "retries": 5,
 8      "sleep": "2.0-3.5",
 9      "sleep-429": 2,
10      "image-filter": "user is author",
11      "filename": "{author[name]}-{tweet_id}-{date:%Y%m%d_%H%M%S}-img{num}.{extension}"
12    }
13  }
14}
  • base-directory 下载后存放的目录
  • videos 下载示例,只下载图片就改为 false
  • retries 重试次数 5
  • sleep 下载间隔 2.0s 至 3.5s,太快了小心被封 ip,老实点为好
  • sleep-429 遇到 429 错误等待 2s
  • image-filter 是 gallery-dl 的图片属性过滤规则,通过 Python 表达式筛选需要下载的图片,可以写得很复杂。user is author 仅下载目标用户原创图片,未测试求证。
  • filename 文件名格式化成什么样子,谁也不想下载的图片命名乱七八糟的吧!

以上这些就包含核心配置,反正我就是这么写的。

至于其它平台,比如 instagram 是什么样的写法,需要看看官方的配置文档。平台反爬策略千千万,配置不一样完全能理解。

3. 下载测试

示例命令:gallery-dl -vv --cookies-from-browser firefox "https://x.com/zoe2496/media

其实上面的配置里面少了 cookies 部分,核心作用就是给 gallery-dl 提供有效的 X 账号登录凭证,让 gallery-dl 能“伪装”成你已登录的浏览器,下载需要授权的图片视频等内容。

--cookies-from-browser firefox 参数的含义,gallery-dl 自动从你的 Firefox 浏览器中提取已保存的 X 账号登录 cookies,无需你手动导出 Cookies 文件再配置。

比如你是 Linux,它就会从 /home/mephisto/.mozilla/firefox/5esrorfn.default-release/cookies.sqlite 这样类似的路径筛选出属于 x.com 域名的 Cookies,只要浏览器之前已登录 X 账号,Cookies 处于有效期(通常几天到几周),这样还是很贴心的。

我一般 Firefox 找到要下载的账号,然后后运行下面的命令下载:

 1➜  twitter gallery-dl -vv --cookies-from-browser firefox  "https://x.com/zoe2496/media"
 2[gallery-dl][debug] Version 1.31.1
 3[gallery-dl][debug] Python 3.13.11 - Linux-6.18.2-arch2-1-x86_64-with-glibc2.42
 4[gallery-dl][debug] requests 2.32.5 - urllib3 2.6.2
 5[gallery-dl][debug] Configuration Files ['${HOME}/.config/gallery-dl/config.json']
 6[gallery-dl][debug] Starting DownloadJob for 'https://x.com/zoe2496/media'
 7[twitter][debug] Using TwitterMediaExtractor for 'https://x.com/zoe2496/media'
 8[cookies][debug] Extracting cookies from /home/mephisto/.mozilla/firefox/5esrorfn.default-release/cookies.sqlite
 9[cookies][debug] Only loading cookies not belonging to any container
10[cookies][info] Extracted 1793 cookies from Firefox
11[urllib3.connectionpool][debug] Starting new HTTPS connection (1): x.com:443
12......此处省略......
13[twitter][debug] Sleeping 3.39 seconds (download)
14b[urllib3.connectionpool][debug] Starting new HTTPS connection (1): pbs.twimg.com:443
15[urllib3.connectionpool][debug] https://pbs.twimg.com:443 "GET /media/G9cQxetaYAIlyhR?format=jpg&name=orig HTTP/1.1" 200 921878
16/home/mephisto/Pictures/twitter/zoe2496/zoe2496-2006090615453544936-20251230_195048-img1.jpg
17[twitter][debug] Sleeping 3.26 seconds (download)
18[urllib3.connectionpool][debug] Starting new HTTPS connection (1): video.twimg.com:443
19[urllib3.connectionpool][debug] https://video.twimg.com:443 "GET /amplify_video/2006085163848269824/vid/avc1/1280x720/m-ShyiwCyNr8TJGh.mp4?tag=21 HTTP/1.1" 200 1299406
20/home/mephisto/Pictures/twitter/zoe2496/zoe2496-2006085231040946664-20251230_192924-img1.mp4
21[twitter][debug] Sleeping 2.32 seconds (download)
22[urllib3.connectionpool][debug] https://pbs.twimg.com:443 "GET /media/G9cJXkHawAASbGl?format=jpg&name=orig HTTP/1.1" 200 176456
23/home/mephisto/Pictures/twitter/zoe2496/zoe2496-2006082468605247944-20251230_191826-img1.jpg

看上面的输出,图片随机间隔 2.0-3.5 秒,都下载下来了,文件名也很规范,心里乐开花啊😄。

4. 其它

上面的会全部下载用户 media 的图片,你也可以自己写过滤器:

  • "image-filter": ["user is author", "width >= 1200", "height >= 800"] // 组合使用:原创 + 高清

我比较懒,精力有限,外网菩萨高手漫天飞,看看就好,我选择全部下载。

有志青年,要多花时间搞钱学真本领。友情提示,本文纯属技术分享,网络不是法外之地,低调行事,且行且珍惜。