JavaScript SDK
OmniBox JavaScript SDK 提供了丰富的 API,帮助您快速开发爬虫脚本。
引入 SDK
javascript
const OmniBox = require("omnibox_sdk");SDK 通过 NODE_PATH 环境变量自动解析,无需手动指定路径。
API 参考
HTTP 请求
OmniBox.request(url, options)
发送 HTTP 请求。
参数:
url(string): 请求 URLoptions(object, 可选): 请求选项method(string): HTTP 方法,默认为 "GET"headers(object): 请求头body(string|object): 请求体
返回: Promise<Response>
示例:
javascript
// GET 请求
const response = await OmniBox.request("https://api.example.com/data", {
method: "GET",
headers: {
"User-Agent": "Mozilla/5.0",
},
});
// POST 请求
const response = await OmniBox.request("https://api.example.com/submit", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ key: "value" }),
});
// 解析响应
const data = JSON.parse(response.body);日志记录
OmniBox.log(level, message)
记录日志。
参数:
level(string): 日志级别,可选值:"info","warn","error"message(string): 日志消息
返回: Promise<void>
示例:
javascript
await OmniBox.log("info", "脚本执行开始");
await OmniBox.log("warn", "警告信息");
await OmniBox.log("error", "错误信息: " + error.message);环境变量
OmniBox.getEnv(name)
获取环境变量值。
参数:
name(string): 环境变量名称
返回: Promise<string>
示例:
javascript
// 方式1:通过 SDK 获取(异步)
const apiKey = await OmniBox.getEnv("API_KEY");
// 方式2:直接访问(推荐,性能更好)
const apiKey = process.env.API_KEY;网盘相关 API
OmniBox.getDriveFavoriteTags(driveType)
获取网盘收藏标签。
参数:
driveType(string, 可选): 网盘类型,为空则获取全部
返回: Promise<string[]>
示例:
javascript
const tags = await OmniBox.getDriveFavoriteTags("quark");OmniBox.getDriveCategoryData(categoryType, driveType, page, pageSize)
获取网盘分类数据。
参数:
categoryType(string): 分类类型(history/favorite/tag)driveType(string, 可选): 网盘类型page(number): 页码pageSize(number): 每页大小
返回: Promise<Object>
示例:
javascript
const data = await OmniBox.getDriveCategoryData("favorite", "quark", 1, 20);
// 返回: { list: [], total: 0, pageCount: 0 }OmniBox.getDriveFileList(shareURL, pdirFid)
获取网盘文件列表。
参数:
shareURL(string): 分享链接pdirFid(string, 可选): 父目录ID,默认为 "0"(根目录)
返回: Promise<Object>
示例:
javascript
const fileList = await OmniBox.getDriveFileList("https://...", "0");
// 返回: { files: [], total: 0, has_more: false }OmniBox.getDriveVideoPlayInfo(shareURL, fid, flag)
获取视频播放信息。
参数:
shareURL(string): 分享链接fid(string): 文件IDflag(string, 可选): 播放方式(服务端代理、本地代理、直连)
返回: Promise<Object>
示例:
javascript
const playInfo = await OmniBox.getDriveVideoPlayInfo("https://...", "file_id");
// 返回: { url: "", header: {}, danmaku: [] }OmniBox.getDriveShareInfo(shareURL)
获取网盘分享信息。
参数:
shareURL(string): 分享链接
返回: Promise<Object>
示例:
javascript
const shareInfo = await OmniBox.getDriveShareInfo("https://...");OmniBox.processScraping(resourceId, keyword, resourceName, videoFiles)
处理刮削(通用方法)。
参数:
resourceId(string): 资源唯一标识keyword(string, 可选): 搜索关键词resourceName(string, 可选): 资源名称videoFiles(array): 视频文件列表
返回: Promise<Object>
示例:
javascript
const result = await OmniBox.processScraping(
"resource_id",
"关键词",
"资源名称",
[]
);OmniBox.processDriveScraping(shareURL, keyword, resourceName, videoFiles, shareInfo)
处理网盘刮削(向后兼容的别名)。在网盘场景下,shareURL 就是 resourceId。
参数:
shareURL(string): 分享链接(网盘场景下,shareURL 就是 resourceId)keyword(string, 可选): 搜索关键词resourceName(string, 可选): 资源名称videoFiles(array): 视频文件列表shareInfo(object, 可选): 分享信息(已废弃,不再使用)
返回: Promise<Object>
示例:
javascript
const result = await OmniBox.processDriveScraping(
"https://...",
"关键词",
"资源名称",
[],
{}
);OmniBox.getScrapeMetadata(resourceId)
获取刮削元数据(通用方法)。
参数:
resourceId(string): 资源唯一标识
返回: Promise<Object>
示例:
javascript
const metadata = await OmniBox.getScrapeMetadata("resource_id");
// 返回: { scrapeData: null, videoMappings: null }OmniBox.getDriveMetadata(shareURL)
获取网盘元数据(向后兼容的别名)。在网盘场景下,shareURL 就是 resourceId。
参数:
shareURL(string): 分享链接(网盘场景下,shareURL 就是 resourceId)
返回: Promise<Object>
示例:
javascript
const metadata = await OmniBox.getDriveMetadata("https://...");
// 返回: { scrapeData: null, videoMappings: null }OmniBox.getDriveInfoByShareURL(shareURL)
根据分享链接获取网盘显示名称和图标。
参数:
shareURL(string): 网盘分享链接
返回: Promise<Object>
示例:
javascript
const info = await OmniBox.getDriveInfoByShareURL("https://...");
// 返回: { driveType: "uc", displayName: "UC网盘", iconPath: "", iconUrl: "" }弹幕相关 API
OmniBox.getDanmakuByFileName(fileName)
根据文件名匹配弹幕。
参数:
fileName(string): 文件名(用于弹幕匹配)
返回: Promise<Array<{name: string, url: string}>>
示例:
javascript
const danmaku = await OmniBox.getDanmakuByFileName("video.mp4");
// 返回: [{ name: "弹幕源1", url: "https://..." }]完整示例
javascript
const OmniBox = require("omnibox_sdk");
async function home(params) {
try {
await OmniBox.log("info", "开始获取首页数据");
// 获取环境变量
const apiKey = process.env.API_KEY;
// 发送 HTTP 请求
const response = await OmniBox.request("https://api.example.com/home", {
method: "GET",
headers: {
"Authorization": `Bearer ${apiKey}`,
"User-Agent": "Mozilla/5.0",
},
});
// 解析响应
const data = JSON.parse(response.body);
// 处理数据
const classes = data.categories.map(cat => ({
type_id: cat.id,
type_name: cat.name,
}));
const list = data.videos.map(video => ({
vod_id: video.id,
vod_name: video.title,
vod_pic: video.poster,
type_id: video.categoryId,
type_name: video.categoryName,
vod_remarks: video.quality,
vod_year: video.year,
}));
await OmniBox.log("info", `成功获取 ${list.length} 个视频`);
return {
class: classes,
list: list,
};
} catch (error) {
await OmniBox.log("error", `获取首页数据失败: ${error.message}`);
return {
class: [],
list: [],
};
}
}注意事项
- 异步函数:所有 SDK 方法都是异步的,需要使用
await或.then() - 错误处理:建议使用
try-catch捕获错误 - 日志记录:使用
OmniBox.log()记录重要信息,便于调试 - 环境变量:优先使用
process.env直接访问,性能更好 - HTTP 请求:响应体需要手动解析 JSON
下一步
- Python SDK - 查看 Python SDK 文档
- API 参考 - 查看完整的接口规范
- 示例代码 - 查看更多实际示例
