saucenao 中文文档 下载 App

dbmask 是什么:API 里精确控制搜索范围的位掩码

如果你写脚本或调 API,SauceNAO 用三个参数控制搜索哪些数据库——db、dbmask、dbmaski。它们不是随便给的,是一套基于位掩码(bitmask)的精确控制机制。

数据库都有编号

每个数据库在 SauceNAO 内部都有一个固定的数字 ID:

编号数据库
0H-Magazines
1H-Game CG
2DoujinshiDB
3Pixiv Images
4Nico Nico Seiga
5Danbooru
6drawr Images
7Nijie Images
8Yande.re
9Shutterstock
10FAKKU
......(完整列表见 SauceNAO API 文档)

总共有约 46 个有编号的数据库(不同版本可能增减)。

三个参数的作用

db

最简单的参数——单个数据库编号。db=999 表示搜所有数据库(ALL 模式),db=3 表示只搜 Pixiv。

dbmask

位掩码方式——一个整数,每个 bit 代表一个数据库是否搜索。比如:

要搜 Pixiv(3)+ Danbooru(5),计算:

dbmaski

和 dbmask 相反——排除模式。dbmaski=40 意思是「搜所有数据库,但排除 40 对应的那些」。

Python 里怎么算

# 定义数据库编号常量(部分)
DB_PIXIV = 3
DB_DANBOORU = 5
DB_TWITTER = 27  # 具体编号以 API 文档为准

# 构建 dbmask
dbmask = (1 << DB_PIXIV) | (1 << DB_DANBOORU) | (1 << DB_TWITTER)
# 结果:一个整数,可以直接传给 SauceNAO API 的 dbmask 参数

什么时候用哪个

场景用什么
只搜 ALL什么都不用传,或 db=999
只搜单个数据库db=3(Pixiv)
搜多个指定数据库dbmask=xxx
排除几个不想搜的库dbmaski=xxx

实战:排除成人内容数据库

假设你想搜 ALL 但跳过所有 H 向数据库——它们通常编号较小(0~2、10、11 等):

# 假设 H-Magazines=0, H-Game CG=1, DoujinshiDB=2, FAKKU=10
dbmaski = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 10)
# 然后传 dbmaski=xxx 给 API

注意