首页
/ Hydrus Network 开发者 API 详解

Hydrus Network 开发者 API 详解

2025-07-10 08:06:32作者:董灵辛Dennis

概述

Hydrus Network 是一款强大的多媒体管理工具,其开发者 API 为开发者提供了与客户端交互的接口。本文将深入解析 Hydrus API 的核心概念、使用方法和最佳实践。

API 基础

请求与响应格式

Hydrus API 主要使用 UTF-8 编码的 JSON 格式进行通信:

  • POST 请求和 200 OK 响应通常为 JSON 对象
  • GET 请求参数需要经过 JSON 编码和 URL 编码双重处理
  • 除文件/缩略图请求外,所有响应都返回 JSON 格式

错误处理

API 返回标准 HTTP 状态码:

  • 400:参数缺失/无效
  • 401/403/419:访问权限问题
  • 500:服务器端错误

CBOR 支持

Hydrus API 支持 CBOR(简洁二进制对象表示)格式,适合需要高效传输的场景:

  • POST 请求设置 Content-Type 为 application/cbor
  • GET 请求添加 cbor=1 参数
  • 使用 Accept 头可指定期望的响应格式

访问控制

访问密钥

Hydrus 使用 64 字符的十六进制访问密钥进行身份验证,可通过两种方式提供:

  1. HTTP 头:

    Hydrus-Client-API-Access-Key : 0150d9c4f6a6d2082534a997f4588dcf0c56dffe1d03ffbf98472236112236ae
    
  2. 请求参数:

    /get_files/thumbnail?file_id=452158&Hydrus-Client-API-Access-Key=0150d9c4f6a6d2082534a997f4588dcf0c56dffe1d03ffbf98472236112236ae
    

会话密钥

临时会话密钥系统可避免频繁使用主密钥:

  • 通过 /session_key 端点获取
  • 有效期 24 小时(不活动时)或客户端重启时失效
  • 使用 Hydrus-Client-API-Session-Key 头传递

核心概念解析

文件引用参数

引用文件时可使用多种标识方式:

  • file_id:单个数字文件ID
  • file_ids:数字文件ID列表
  • hash:单个SHA256哈希值
  • hashes:SHA256哈希值列表

GET 请求中的列表参数需要双重编码处理:

  1. JSON 编码
  2. URL 编码

文件域参数

搜索时可指定文件域范围:

  • file_service_key:单个文件域
  • file_service_keys:多个文件域联合搜索
  • deleted_file_service_key:从指定域删除的文件
  • deleted_file_service_keys:从多个域删除的文件

注意:联合搜索可能带来性能问题,应优先考虑单一域搜索。

服务对象详解

Hydrus 通过服务(services)管理不同功能域,服务对象包含以下核心属性:

  • name:用户友好的名称(可修改)
  • type:服务类型枚举值(不可修改)
  • service_key:服务的唯一标识(不可修改)

服务类型

主要服务类型包括:

  • 0:标签仓库
  • 1:文件仓库
  • 2:本地文件域(如"我的文件")
  • 5:本地标签域(如"我的标签")
  • 6:星级评分服务
  • 7:喜欢/不喜欢评分服务
  • 10:所有已知标签(联合所有标签服务)
  • 11:所有已知文件(联合所有文件服务)
  • 14:回收站
  • 15:所有本地文件
  • 21:所有我的文件

评分服务扩展属性

评分服务包含额外元数据:

  • star_shape:评分图标形状(圆形、方形、星形等)
  • min_stars/max_stars:星级评分范围

内容状态模型(CDPP)

Hydrus 使用四态模型管理内容:

  1. 当前(Current):内容存在于服务中
  2. 已删除(Deleted):内容已从服务移除
  3. 待处理(Pending):内容等待添加到服务
  4. 申请中(Petitioned):内容等待从服务移除

状态组合规则:

  • 申请中内容必须同时是当前内容
  • 已删除和待处理可同时存在
  • 当前内容不能同时是已删除状态

最佳实践

  1. 服务标识:始终使用 service_key 而非服务名称
  2. 性能优化:避免不必要的联合搜索
  3. 错误处理:妥善处理 419(会话过期)等状态码
  4. 编码规范:严格遵循参数编码要求
  5. 权限管理:检查每个请求的权限要求

通过深入理解这些核心概念,开发者可以构建出高效、稳定的 Hydrus 客户端应用,充分利用其强大的多媒体管理能力。