Skip to content

高级开发 - API 详解

OPENUGC_API_V2 概述

OPENUGC_API_V2 是插件系统的核心父类,提供了丰富的 API 接口,让您能够:

  • 控制页面打开和关闭
  • 执行异步操作
  • 等待页面元素加载
  • 跨页面通信
  • 管理页面生命周期

构造函数

js
constructor(args) {
  this.args = args;           // 工具参数
  this.BRIDGE_API = window['BRIDGE_API'];  // 浏览器桥接API
}

1. sleep() - 异步等待

功能:让工具暂停执行指定时间

参数

  • t (number): 等待时间(毫秒),默认 1000ms

使用示例

js
class Tool extends OPENUGC_API_V2 {
  async run() {
    console.log('开始执行...');
    await this.sleep(2000);  // 等待2秒
    console.log('继续执行...');

    // 等待元素加载
    const button = document.querySelector('#submit-btn');
    await this.sleep(500);  // 等待DOM更新
    button.click();

    return '操作完成';
  }
}

应用场景

  • 等待页面加载
  • 等待动画完成
  • 节流控制
  • 避免频繁操作

2. OpenUrl() - 打开并管理页面

功能:打开新页面并获取页面管理句柄

参数

  • opt (object): 页面配置选项
    • url (string): 目标URL
    • runAt (string): 脚本注入时机 'document-start''document-end'
    • initJs (string): 初始化脚本
    • showLog (boolean): 是否显示日志

返回值:页面管理对象

  • id: 页面ID
  • execute(js): 在页面中执行代码
  • close(): 关闭页面

完整示例

js
class Tool extends OPENUGC_API_V2 {
  async run() {
    // 打开新页面
    const page = await this.OpenUrl({
      url: 'https://example.com',
      runAt: 'document-end',
      showLog: true
    });

    try {
      // 在页面中执行代码
      const result = await page.execute(`
        // 等待页面加载完成
        await new Promise(resolve => setTimeout(resolve, 1000));

        // 获取页面标题
        const title = document.title;

        // 提取数据
        const items = Array.from(document.querySelectorAll('.item'))
          .map(item => ({
            text: item.innerText.trim(),
            link: item.querySelector('a')?.href
          }));

        return { title, items };
      `);

      console.log('页面标题:', result.title);
      console.log('提取的数据:', result.items);

      return result;
    } finally {
      // 关闭页面
      page.close();
    }
  }
}

相关链接

Released under the MIT License.