Steward v3.5.1 重磅发布 -- 开放 Steward API,新增插件编辑器,编写自己的 plugin
发布于 8 个月前 作者 solobat 729 次浏览 最后一次编辑是 7 个月前 来自 更新

更新说明

插件编辑器 插件开发说明 – api 文档

代码包裹在 module.exports = function(steward) {} 中,steward 为注入的 api

{
chrome, // chrome api
util, // 工具 api
dayjs, // 日期库
axios, // http 库
constant // 常量
}

插件组成说明

{
    id, // 开发者 id,比如邮箱或 github 账号
    version, // 版本号
    name, // 插件名,与 id 一起级成唯一识别 id(uid)
    category: 'other', // 插件类别,暂时没用
    icon, // 插件 icon
    title, // 插件标题
    commands, // 插件命令列表,不能为空
    onInput, // 核心 api, 输入事件函数
    onEnter // 核心 api,选中事件函数
};

Imgur

NewTab 底部 button 组件化,默认显示

大幅优化安装包大小 从 2.4m 减小到 900k

3 回复

分享一个 ip search 插件,用的聚合搜索的 api,app_key 大家自行申请


module.exports = function(steward) {
  const version = 1;
  const id = 'solobat';
  const name = 'IP Search';
  const key = 'ip';
  const type = 'keyword';
  const icon = 'http://static.oksteward.com/ip.png';
  const title = '查询 ip';
  const subtitle = '输入 ipv4 地址,查询 ip 所在地点及运营商';
  const commands = [{
	  key,
	  type,
	  title,
	  subtitle,
	  icon
  }];
  
  const APP_KEY = 'xxxxx';
  const ipRegexp = /\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b/;
  
  function searchIp(ip) {
	const url = `http://apis.juhe.cn/ip/ip2addr?ip=${ip}&key=${APP_KEY}`;
   
	  return steward.axios.get(url);
  }
  
  function dataFormat(data) {
	  return [{
		  key,
	  icon,
	  title: `${data.area} -- ${data.location}`,
	  desc: '按 Enter 复制到剪贴板'
	}];
  }
  
  function onInput(query, command) {
	  const str = query.trim();
	
	  if (str && ipRegexp.test(str)) {
		  return searchIp(str).then(results => {
			const resp = results.data;
			
			  if (resp.resultcode == 200) {
			  return dataFormat(resp.result); 
			} else {
			  return [];
			}
		  }).catch(results => {
			  return steward.util.getDefaultResult(command);
		  });
	  } else {
		  return steward.util.getDefaultResult(command); 
	  }
  }
  
  function onEnter(item, command, query, shiftKey, list) {
	  steward.util.copyToClipboard(item.title, true);
  }
  
  return {
	  id,
	  version,
	  name,
	  category: 'other',
	  icon,
	  title,
	  commands,
	  onInput,
	  onEnter
  };
}

回到顶部