使用subscan-api查询mint nft数量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| import requests import redis import datetime
CONTRACT_ADDRESS = "0x705A0890bFDcD30eaf06b25b9D31a6C5C099100d" URL = "https://moonbase.api.subscan.io/api/scan/evm/token/transfer" API_KEY = "你的subscan api密钥"
r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
def fetch_data(): headers = {"Content-Type": "application/json", "x-api-key": API_KEY} payload = {"contract": CONTRACT_ADDRESS, "row": 100, "page": 0}
print(f"--- 开始请求 Subscan API ---") response = requests.post(URL, json=payload, headers=headers) data = response.json() transfers = data['data'].get('list', []) print(f"API 返回记录总数: {len(transfers)}")
daily_stats = {} for tx in transfers: # 根据 DEBUG 结果,字段名是 'create_at' ts = tx.get('create_at') if ts: ts_int = int(ts) # 转换为日期 date_str = datetime.datetime.fromtimestamp(ts_int).strftime('%Y-%m-%d') daily_stats[date_str] = daily_stats.get(date_str, 0) + 1
print(f"统计后的每日字典: {daily_stats}")
if daily_stats: # 写入 Redis r.delete("whale_vault:daily_mints") # 先清理,确保数据纯净 for date, count in daily_stats.items(): r.hset("whale_vault:daily_mints", date, count) print(f"✅ 大功告成!已同步 {sum(daily_stats.values())} 条数据到 Redis") else: print("❌ 逻辑错误:字段存在但解析失败") if __name__ == "__main__": fetch_data()
|
查询redis数据库中的数量
root@server:/opt/Whale-Vault/backend# redis-cli HGETALL whale_vault:daily_mints
- “2026-01-13”
- “2”
- “2026-01-11”
- “4”
- “2026-01-10”
- “22”
第一步,我要指定一个特殊的hashcode为出版社的管理hashcode
请确保你的 /opt/Whale-Vault/backend/.env 文件中有以下两行:
ADMIN_CODE_HASH=访问hash
ADMIN_ADDRESS=钱包地址
redis查询hash code
在 Redis 中查询 Hash Code,取决于你是想查询具体的某个兑换码是否存在,还是想列出所有已存储的兑换码。
根据你的项目结构,兑换码主要存储在 Set(集合) 和 String(字符串) 中。以下是常用的查询命令:
1. 查询某个具体的 Hash Code 状态
这是最常用的操作,用来检查一个码是否有效、是否已使用、或绑定了哪个地址。
| redis-cli SISMEMBER vault:codes:valid "你的_hash_code"
|
返回 1 表示有效,0 表示不在库中。
| redis-cli SISMEMBER vault:codes:used "你的_hash_code"
|
返回 1 表示已用过。
| redis-cli GET "bind:你的_hash_code"
|
如果已绑定,会返回 0x... 地址。
2. 列出所有的 Hash Code
如果你想批量查看数据库里到底有多少码,可以使用以下命令:
| redis-cli SMEMBERS vault:codes:valid
|
| redis-cli SMEMBERS vault:codes:used
|
| redis-cli SCARD vault:codes:valid
|
3. 模糊搜索 (Scan)
如果你只记得 Hash Code 的前几位,想找出来:
| redis-cli --scan --pattern "bind:9f65*"
|
4. 配合你的管理员逻辑进行手动设置
既然你刚才设定了 9f657… 为管理码,你可以通过以下命令手动确保它在 Redis 中处于正确状态:
| redis-cli SADD vault:codes:valid "hash地址"
redis-cli SREM vault:codes:used "hash地址"
|
下一步建议:
既然你已经修改了 main.go 引入了 ADMIN_CODE_HASH 的判断,需要我帮你把前端 MintConfirm.tsx 里的拦截跳转逻辑写出来吗? 这样当你输入出版社地址和这个特殊的 Hash 后,就能丝滑地跳转到 /admin/overview 了。