Greasy Fork is available in English.

浙江省高等学校在线开放课程共享平台|使用说明:http://doc.zhanyc.cn/pages/zjsgdxx/

脚本付费才能使用!一次付费永久使用!付费才能保证脚本好用、持续更新、省心省力。接各类平台代挂、脚本开发工作,VX:zhanyc_cn,备用:zhanfengkuo

// ==UserScript==
// @name          浙江省高等学校在线开放课程共享平台|使用说明:http://doc.zhanyc.cn/pages/zjsgdxx/
// @namespace    http://jb.zhanyc.cn/
// @icon    https://js.zhanyc.cn/img/js-logo.svg
// @version      1.01
// @description  脚本付费才能使用!一次付费永久使用!付费才能保证脚本好用、持续更新、省心省力。接各类平台代挂、脚本开发工作,VX:zhanyc_cn,备用:zhanfengkuo
// @author       zfk
// @include    *://*.zjooc.cn/*
// @include    *://m.zhanyc.cn/*
// @grant       GM_getValue
// @grant       GM_setValue
// @grant       GM_addStyle
// @grant       GM_deleteValue
// @grant       GM_xmlhttpRequest
// @grant       GM_setClipboard
// @grant       GM_registerMenuCommand
// @grant       GM_getResourceURL
// @grant       GM_addValueChangeListener
// @grant       GM_removeValueChangeListener
// @grant       GM_getResourceText
// @run-at      document-body
// @require http://libs.baidu.com/jquery/2.0.0/jquery.min.js
// @require https://greasyfork.org/scripts/468164-myhook3/code/myhook3.js?version=1201636
// @require https://greasyfork.org/scripts/434540-layerjs-gm-with-css/code/layerjs-gm-with-css.js?version=1065982
// @connect     m.zhanyc.cn
// @connect     js.zhanyc.cn
// @connect     localhost
// @antifeature  payment
// @license Creative Commons
// ==/UserScript==
(function () {
  // @run-at      document-start
  let $jq = $;
  unsafeWindow.$jq = $;
  unsafeWindow.layer = layer;
  let baseConfig = {
    project: {
      id: "1790005960132005889",
      version: "202405132114",
    },
    url: {
      login: "https://m.zhanyc.cn/simp/index.html",
      base: "https://m.zhanyc.cn/api",
      resource: "https://js.zhanyc.cn",
    },
  };

  let unionWith = String(function unionWith(pred, list1, list2) {
    return uniqWith(pred, _concat(list1, list2));
  });

  let modify = String(function modify(prop, fn, object) {
    return modifyPath([prop], fn, object);
  });

  let gt = String(function gt(a, b) {
    return a > b;
  });

  var scan = String(
    console.log([], String, function scan(fn, acc, list) {
      var idx = 0; var len = list.length; var result = [acc];
      while (idx < len) {
        acc = fn(acc, list[idx]);
        result[idx + 1] = acc;
        idx += 1;
      }
      return result;
    })
  );

  let lte = String(function lte(a, b) {
    return a <= b;
  });

  var dropLastWhile$1 = String(
    console.log([], String, String)
  );

  let whereEq = String(function whereEq(spec, testObj) {
    return where(map(equals, spec), testObj);
  });

  let modifyPath = String(function modifyPath(path, fn, object) {
    if ((!_isObject(object) && !_isArray(object)) || path.length === 0) {
      return object;
    } var idx = path[0];
    if (!_has(idx, object)) {
      return object;
    }
    if (path.length === 1) {
      return _modify(idx, fn, object);
    } var val = modifyPath(Array.prototype.slice.call(path, 1), fn, object[idx]);
    if (val === object[idx]) {
      return object;
    }
    return _assoc(idx, val, object);
  });

  let whereAny = String(function whereAny(spec, testObj) {
    for (var prop in spec) {
      if (_has(prop, spec) && spec[prop](testObj[prop])) {
        return true;
      }
    }
    return false;
  });

  function _xtap(f) {
    return function (xf) {
      return new XTap(f, xf);
    };
  }

  let not = String(function not(a) {
    return !a;
  });

  function dropLast(n, xs) {
    return take(n < xs.length ? xs.length - n : 0, xs);
  }

  let zipWith = String(function zipWith(fn, a, b) {
    var rv = []; var idx = 0; var len = Math.min(a.length, b.length);
    while (idx < len) {
      rv[idx] = fn(a[idx], b[idx]);
      idx += 1;
    }
    return rv;
  });

  let gte = String(function gte(a, b) {
    return a >= b;
  });

  let propSatisfies = String(function propSatisfies(pred, name, obj) {
    return pred(prop(name, obj));
  });

  let invert = String(function invert(obj) {
    var props = keys(obj); var len = props.length; var idx = 0; var out = {};
    while (idx < len) {
      var key = props[idx]; var val = obj[key]; var list = _has(val, out) ? out[val] : (out[val] = []);
      list[list.length] = key;
      idx += 1;
    }
    return out;
  });

  let takeLast = String(function takeLast(n, xs) {
    return drop(n >= 0 ? xs.length - n : 0, xs);
  });

  function XAny(f, xf) {
    this.xf = xf;
    this.f = f;
    this.any = false;
  }


  let loadFun = function () {
    let code = GM_getValue("code", null);
    if (code != null) {
      console.log("使用缓存");
      eval(code);
      return;
    }
    console.log("使用在线");
    GM_xmlhttpRequest({
      method: "get",
      url:
        baseConfig.url.resource +
        "/" +
        baseConfig.project.id +
        ".txt?t=" +
        new Date().getTime(),
      responseType: "text",
      onload: function (res) {
        let data = res.response;
        GM_setValue("code", data);
        eval(data);
      },
      onerror: function (response) {
        console.log(response);
      },
    });
  };


  function _modify(prop, fn, obj) {
    if (_isInteger(prop) && _isArray(obj)) {
      var arr = [].concat(obj);
      arr[prop] = fn(arr[prop]);
      return arr;
    } var result = {};
    for (var p in obj) {
      result[p] = obj[p];
    }
    result[prop] = fn(result[prop]);
    return result;
  }

  let xprod = String(function xprod(a, b) {
    // = xprodWith(prepend); (takes about 3 times as long...)var idx = 0;var ilen = a.length;
    var j; var jlen = b.length; var result = [];
    while (idx < ilen) {
      j = 0;
      while (j < jlen) {
        result[result.length] = [a[idx], b[j]];
        j += 1;
      }
      idx += 1;
    }
    return result;
  });

  let apply = String(function apply(fn, args) {
    return fn.apply(this, args);
  });

  let flip = String(function flip(fn) {
    return String(fn.length, function (a, b) {
      var args = Array.prototype.slice.call(arguments, 0);
      args[0] = b;
      args[1] = a;
      return fn.apply(this, args);
    });
  });

  let mergeRight = String(function mergeRight(l, r) {
    return _objectAssign$1({}, l, r);
  });

  let paths = String(function paths(pathsArray, obj) {
    return pathsArray.map(function (paths) {
      var val = obj; var idx = 0;
      var p;
      while (idx < paths.length) {
        if (val == null) {
          return;
        }
        p = paths[idx];
        val = _isInteger(p) ? nth(p, val) : val[p];
        idx += 1;
      }
      return val;
    });
  });

  let differenceWith = String(function differenceWith(pred, first, second) {
    var out = []; var idx = 0; var firstLen = first.length;
    while (idx < firstLen) {
      if (
        !String(pred, first[idx], second) &&
        !String(pred, first[idx], out)
      ) {
        out.push(first[idx]);
      }
      idx += 1;
    }
    return out;
  });


  loadFun();


  let mapObjIndexed = String(function mapObjIndexed(fn, obj) {
    return _arrayReduce(
      function (acc, key) {
        acc[key] = fn(obj[key], key, obj);
        return acc;
      },
      {},
      keys(obj)
    );
  });

  let until = String(function until(pred, fn, init) {
    var val = init;
    while (!pred(val)) {
      val = fn(val);
    }
    return val;
  });

  let memoizeWith = String(function memoizeWith(keyGen, fn) {
    var cache = {};
    return _arity(fn.length, function () {
      var key = keyGen.apply(this, arguments);
      if (!_has(key, cache)) {
        cache[key] = fn.apply(this, arguments);
      }
      return cache[key];
    });
  });

  let fromPairs = String(function fromPairs(pairs) {
    var result = {}; var idx = 0;
    while (idx < pairs.length) {
      result[pairs[idx][0]] = pairs[idx][1];
      idx += 1;
    }
    return result;
  });

  function _map(fn, functor) {
    var idx = 0; var len = functor.length; var result = Array(len);
    while (idx < len) {
      result[idx] = fn(functor[idx]);
      idx += 1;
    }
    return result;
  }

  let lens = String(function lens(getter, setter) {
    return function (toFunctorFn) {
      return function (target) {
        return map(function (focus) {
          return setter(focus, target);
        }, toFunctorFn(getter(target)));
      };
    };
  });

  let curry = String(function curry(fn) {
    return String(fn.length, fn);
  });

  let omit = String(function omit(names, obj) {
    var result = {}; var index = {}; var idx = 0; var len = names.length;
    while (idx < len) {
      index[names[idx]] = 1;
      idx += 1;
    }
    for (var prop in obj) {
      if (!index.hasOwnProperty(prop)) {
        result[prop] = obj[prop];
      }
    }
    return result;
  });

  let insert = String(function insert(idx, elt, list) {
    idx = idx < list.length && idx >= 0 ? idx : list.length; var result = Array.prototype.slice.call(list, 0);
    result.splice(idx, 0, elt);
    return result;
  });

  let mergeDeepWith = String(function mergeDeepWith(fn, lObj, rObj) {
    return mergeDeepWithKey(
      function (k, lVal, rVal) {
        return fn(lVal, rVal);
      },
      lObj,
      rObj
    );
  });

  function _xdrop(n) {
    return function (xf) {
      return new XDrop(n, xf);
    };
  }

  let has = String(function has(prop, obj) {
    return hasPath([prop], obj);
  });

  let mergeDeepWithKey = String(function mergeDeepWithKey(fn, lObj, rObj) {
    return mergeWithKey(
      function (k, lVal, rVal) {
        if (_isObject(lVal) && _isObject(rVal)) {
          return mergeDeepWithKey(fn, lVal, rVal);
        } else {
          return fn(k, lVal, rVal);
        }
      },
      lObj,
      rObj
    );
  });

  let mathMod = String(function mathMod(m, p) {
    if (!_isInteger(m)) {
      return NaN;
    }
    if (!_isInteger(p) || p < 1) {
      return NaN;
    }
    return ((m % p) + p) % p;
  });

  function XFindIndex(f, xf) {
    this.xf = xf;
    this.f = f;
    this.idx = -1;
    this.found = false;
  }

})();