YapiCopy

Yapi接口数据一键复制

目前为 2023-07-28 提交的版本。查看 最新版本

// ==UserScript==
// @name         YapiCopy
// @namespace    http://tampermonkey.net/
// @version      0.1.4
// @description  Yapi接口数据一键复制
// @author       Enjoy
// @icon         https://foruda.gitee.com/avatar/1671100286067517749/4867929_enjoy_li_1671100285.png!avatar60
// @match        *://yapi.*.com/project/*/interface/api/*
// @grant        GM_addElement
// @grant        GM_addStyle
// @grant        GM_setClipboard
// @license      GPL License
// ==/UserScript==


run(document);
function run(document) {
  createBtn();
  return;
  function cellecteData() {
    var _values$, _values$2;
    var dataInnerText = document.querySelectorAll('table tbody')[1].innerText || '';
    var dataStr = formatParamsStr(dataInnerText);
    var desc = document.querySelector('.colName').innerText || '';
    var pageUrl = location.href;
    var values = document.querySelectorAll('.colValue');
    var method = ((_values$ = values[3]) === null || _values$ === void 0 ? void 0 : _values$.innerText.toLocaleLowerCase()) || '';
    var apiUrl = ((_values$2 = values[4]) === null || _values$2 === void 0 ? void 0 : _values$2.innerText) || '';
    var template = "\n    /* // \u53C2\u6570\u8BF4\u660E\n     let  data = { ".concat(paramsStr, "\n      }\n    */\n\n    /**\n    * @description ").concat(desc, "\n    * @see ").concat(pageUrl, "\n    * @param { data } data\n    */\n    export function ").concat(apiUrl.replace(/^.*\//, ''), " (data) {\n      return http.").concat(method, "('").concat(apiUrl, "',data)\n    }");
    return template;
  }
  function formatParamsStr(dataStr) {
    ;
    ['\n', '非必须', '必须', 'format: int32', '\t'].forEach(function (item) {
      dataStr = dataStr.replace(new RegExp(item, 'g'), '');
    });
    ['integer', 'string'].forEach(function (item) {
      dataStr = dataStr.replace(new RegExp(item, 'g'), ":'".concat(item, "',// "));
    });
    dataStr = dataStr.replace(/([a-zA-Z]+:['a-zA-Z]+,\/\/)/g, '\n $1');
    return dataStr;
  }
  function createBtn() {
    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
    var _options$selector = options.selector,
      selector = _options$selector === void 0 ? 'yapiShuctCopy' : _options$selector;
    var btnDom = document.querySelector("#".concat(selector));
    if (btnDom) return btnDom;
    btnDom = document.createElement('div');
    btnDom.innerHTML = "\n      \uF0C5\n      <style>\n        #yapiShuctCopy {\n          width: 20px;\n          height: 35px;\n          opacity: 0.2;\n          background: #0b7d1e;\n          font-weight: 800;\n          display: flex;\n          align-items: center;\n          justify-content: center;\n          border-radius: 35px 0 0 35px;\n          cursor: pointer;\n          color: #fff;\n          transition: all 0.2s;\n          font-size: 18px;\n          position: fixed;\n          right: 0;\n          top: 50vh;\n        }\n\n        #yapiShuctCopy:hover {\n          opacity: 0.5;\n          width: 35px;\n        }\n      ";
    btnDom.setAttribute('id', selector);
    btnDom.setAttribute('title', '一键复制');
    // btnDom.style.cssText = ''
    document.body.appendChild(btnDom);
    btnDom.addEventListener('click', function () {
      doCopy(cellecteData());
    });
  }
  function doCopy(newValue) {
    var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'textarea';
    var textarea = document.querySelector("#".concat(selector));
    if (!textarea) {
      textarea = document.createElement('textarea');
      textarea.style.cssText = 'position: absolute;left: -500px;top: -500px;max-width: 50px;opacity: 0;';
      document.body.appendChild(textarea);
    }
    textarea.value = newValue;
    textarea.select();
    setTimeout(function () {
      document.execCommand('Copy');
    }, 200);
  }
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址