Skip to content

config custom plugin

栽培者 edited this page Sep 3, 2019 · 2 revisions

自定义插件

自定义插件 是指在每个站点的特定页面执行的一些 用户脚本 (下称插件) ,类似于 Tampermonkey 的自定义脚本;

助手为每个站预设了一些 插件 ,比如种子页面的 一键下载复制链接 等都是助手所预设的 插件 ;通过这些 插件 可以快速的进行一些常用操作;

对于一些站点,您可能有一些特定的需求,针对这些特定的需求,助手允许您通过自定义插件来实现。

自定义插件入口

目前,插件是针对每个站点来进行定义,未来可能会考虑自定义插件适用的站点范围;

  • 打开 站点设置

  • 找到需要添加插件的站点;

  • 点击 插件 按钮,进入插件列表;

  • 在插件列表中,会列出当前已存在的插件:

  • 不可编辑的项表示助手预设的插件;

新增插件

  • 在插件列表点击 新增 ,进入插件定义界面:

  • 插件名称 必填:起个好听的名称;

  • 适用页面 必填:该插件需要在哪些页面生效,可以指定多个页面;

  • 附加脚本文件

    • 该插件执行时需要的一些依赖脚本,可以指定多个脚本文件,将按顺序进行加载;
    • / 指向助手的 /resource/ 目录;
    • 允许使用外部脚本链接(v1.1.3+),如:https://unpkg.com/[email protected]/dist/jquery.js
  • 附加样式文件:该插件执行时需要的样式依赖,可以指定多个样式文件,将按顺序进行加载;

  • JS脚本:该插件主要的执行脚本内容;

  • 附加样式:该插件需要使用的样式(CSS)内容;

JS脚本说明

  • 脚本请使用闭包;
  • 可用的全局对象:
    • PTService :是助手在当前页面挂载的全局对象;
      • 具体可用方法,请参考:该文件PTPContent 类;
    • jQuery :助手加载的 jQuery 对象,可用于解析和选择页面的原始DOM;
  • 同一个页面如果有多个适用的脚本,将按以下顺序依次加载:
    • 系统定义的插件脚本;
    • 附加脚本文件;
    • JS脚本;
  • 关于 NexusPHPCommon 类
    • 该类定义了一些公用的方法,可用于操作助手执行一些指令,如:下载种子,搜索种子等;
    • 该类默认情况下会在种子页面和种子详情页面加载;
    • 如果需要在其他页面使用,可在自定义时,在 附加脚本文件 中添加 /schemas/NexusPHP/common.js 文件进行加载;

示例

添加一个自定义按钮

  • 在需要添加的站点(如MT)新增插件,内容如下:

    • 插件名称一键下载ipv6
    • 适用页面/details.php
    • JS脚本
    (function() {
      // 继承 NexusPHPCommon 类
      // 参考:https://github.com/ronggang/PT-Plugin-Plus/blob/master/resource/schemas/NexusPHP/common.js
      class App extends window.NexusPHPCommon {
        init() {
          // 增加下载按钮
          PTService.addButton({
            title: "下载ipv6",
            label: "下载ipv6",
            icon: "get_app",
            type: PTService.buttonType.popup,
            click: (success, error, event) => {
              let url = jQuery("a[href*='ipv6=1'][href*='https=1']").attr("href");
              if (url.substr(0, 2) === "//") {
                url = `${location.protocol}${url}`;
              } else if (url.substr(0, 1) === "/") {
                url = `${location.origin}${url}`;
              } else if (url.substr(0, 4) !== "http") {
                url = `${location.origin}/${url}`;
              }
    
              let title = "";
    
              if (this.getTitle) {
                title = this.getTitle();
              } else {
                title = document.title;
              }
    
              let options = {
                url,
                title,
                link: this.currentURL
              };
    
              console.log(options);
    
              // 显示“下载到”下载菜单
              this.showContentMenusForUrl(options,
                event.originalEvent,
                success,
                error
              );
            }
          });
        }
      }
      new App().init();
    })();
  • 设置完成后,点击确认进行保存;

  • 打开该站点的一个种子详情页,将会看到新增的自定义按钮(下载ipv6):

  • 点击测试是否正常工作;

  • 如果页面没有显示新增自定义按钮,刷新页面即可;

  • 插件添加完成。

插件不限于自定义按钮,可以是任何有效的 javascript 脚本内容。

Clone this wiki locally