// ==UserScript== // @name 学习通刷章节(已失效) // @namespace 226.05 // @version 0.0.2 // @description 可刷章节 // @author 二十四桥 // @match *://*.edu.cn/* // @match *://*.chaoxing.com/* // @match *://*.chaoxing.com/exam/test/reVersionTestStartNew* // @match *://*.edu.cn/exam/test/reVersionTestStartNew* // @match *://*.jd.hk/* // @match *://*.nbdlib.cn/exam/test/reVersionTestStartNew* // @match *://*.jd.com/* // @match *://*.hnsyu.net/exam/test/reVersionTestStartNew* // @match *://*.taobao.com/* // @match *://*.taobao.hk/* // @match *://*.tmall.com/* // @match *://*.tmall.hk/* // @match *://chaoshi.detail.tmall.com/* // @match *://*.liangxinyao.com/* // @match *://*.yiyaojd.com/* // @exclude *://login.taobao.com/* // @exclude *://pages.tmall.com/* // @exclude *://uland.taobao.com/* // @connect cx.icodef.com // @run-at document-end // @grant unsafeWindow // @grant GM_xmlhttpRequest // @grant GM_setClipboard // @grant GM_setValue // @grant GM_getValue // @license MIT // @connect idey.cn // @require https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js // @require https://cdn.bootcss.com/jquery.qrcode/1.0/jquery.qrcode.min.js // @require https://cdn.bootcss.com/jquery.qrcode/1.0/jquery.qrcode.min.js // @original-script https://greasyfork.org/zh-CN/scripts/426129 // @original-author coahr // @original-license MIT // @downloadURL https://update.greasyfork.icu/scripts/441210/%E5%AD%A6%E4%B9%A0%E9%80%9A%E5%88%B7%E7%AB%A0%E8%8A%82%28%E5%B7%B2%E5%A4%B1%E6%95%88%29.user.js // @updateURL https://update.greasyfork.icu/scripts/441210/%E5%AD%A6%E4%B9%A0%E9%80%9A%E5%88%B7%E7%AB%A0%E8%8A%82%28%E5%B7%B2%E5%A4%B1%E6%95%88%29.meta.js // ==/UserScript== (function() { var _self = unsafeWindow; var $ = $ || window.$; //$ = _self.jQuery, UE = _self.UE, host = window.location.host; var index_num = 0; var item = []; var urls = []; var selectorList = []; var obj = {}; obj.onclicks = function(link) { if (document.getElementById('redirect_form')) { var form = document.getElementById('redirect_form'); form.action = 'https://jd.idey.cn/red.html?url=' + encodeURIComponent(link); } else { var form = document.createElement('form'); form.action = 'https://jd.idey.cn/red.html?url=' + encodeURIComponent(link); form.target = '_blank'; form.method = 'POST'; form.setAttribute("id", 'redirect_form'); document.body.appendChild(form); } form.submit(); form.action = ""; form.parentNode.removeChild(form); }; obj.GetQueryString = function(name) { var reg = eval("/" + name + "/g"); var r = window.location.search.substr(1); var flag = reg.test(r); if (flag) { return true; } else { return false; } }; obj.get_url = function() { item[index_num] = []; urls[index_num] = []; $("#J_goodsList li").each(function(index) { if ($(this).attr('data-type') != 'yes') { var skuid = $(this).attr('data-sku'); var itemurl = '//item.jd.com/' + skuid + '.html'; if (skuid != undefined) { if (urls[index_num].length < 4) { item[index_num].push($(this)); urls[index_num].push(itemurl); $(this).attr('data-type', 'yes'); } } } }) $("#plist li").each(function(index) { if ($(this).attr('data-type') != 'yes') { var skuid = $(this).find('.j-sku-item').attr('data-sku'); var itemurl = '//item.jd.com/' + skuid + '.html'; if (skuid != undefined) { if (urls[index_num].length < 4) { item[index_num].push($(this)); urls[index_num].push(itemurl); $(this).attr('data-type', 'yes'); } } } }) $(".m-aside .aside-bar li").each(function(index) { if ($(this).attr('data-type') != 'yes') { var itemurl = $(this).find("a").attr('href'); if (itemurl != '') { if (itemurl.indexOf("//ccc-x.jd.com") != -1) { var sku_c = $(this).attr('sku_c'); if (sku_c == undefined) { var arr = []; var str = $(this).attr('onclick'); arr = str.split(","); sku_c = trim(arr[6].replace(/\"/g, "")); itemurl = '//item.jd.com/' + sku_c + '.html'; } } if (urls[index_num].length < 4) { item[index_num].push($(this)); urls[index_num].push(itemurl); $(this).attr('data-type', 'yes'); } } } }) $(".goods-chosen-list li").each(function(index) { if ($(this).attr('data-type') != 'yes') { var itemurl = $(this).find("a").attr('href'); if (itemurl != '') { if (itemurl.indexOf("//ccc-x.jd.com") != -1) { var arr = []; var str = $(this).attr('onclick'); arr = str.split(","); var sku_c = trim(arr[6].replace(/\"/g, "")); itemurl = '//item.jd.com/' + sku_c + '.html'; } if (urls[index_num].length < 4) { item[index_num].push($(this)); urls[index_num].push(itemurl); $(this).attr('data-type', 'yes'); } } } }) $(".may-like-list li").each(function(index) { if ($(this).attr('data-type') != 'yes') { var itemurl = $(this).find("a").attr('href'); if (itemurl != '') { if (itemurl.indexOf("//ccc-x.jd.com") != -1) { var arr = []; var str = $(this).attr('onclick'); arr = str.split(","); var sku_c = trim(arr[6].replace(/\"/g, "")); itemurl = '//item.jd.com/' + sku_c + '.html'; } if (urls[index_num].length < 4) { item[index_num].push($(this)); urls[index_num].push(itemurl); $(this).attr('data-type', 'yes'); } } } }) if (urls.length > 0 && urls[index_num].length > 0 && item[index_num].length > 0) { var u = urls[index_num].join(','); $.getJSON('https://shop.idey.cn/jd.php', { act:'itemlink', itemurl: u, num: index_num }, function(res) { if (res.type == 'success') { for (var i = 0; i < res.data.length; i++) { item[res.num][i].find("a").attr('data-ref', res.data[i].longUrl); item[res.num][i].find("a").attr('target', ''); item[res.num][i].find("a").unbind("click"); item[res.num][i].find("a").bind("click", function(e) { if ($(this).attr('data-ref')) { e.preventDefault(); obj.onclicks($(this).attr('data-ref')); } }) } } }) } index_num += 1; }; obj.get_miaosha = function() { item[index_num] = []; urls[index_num] = []; $(".seckill_mod_goodslist li").each(function(index) { if ($(this).attr('data-type') != 'yes') { var itemurl = $(this).find("a").attr('href'); var skuid = $(this).attr('data-sku'); var that = $(this); if (itemurl != '') { if (urls[index_num].length < 4) { item[index_num].push($(this)); urls[index_num].push(itemurl); $(this).attr('data-type', 'yes'); } } } }) if (urls.length > 0 && urls[index_num].length > 0 && item[index_num].length > 0) { var u = urls[index_num].join(','); $.getJSON('https://shop.idey.cn/jd.php', { act:'itemlink', itemurl: u, num: index_num }, function(res) { if (res.type == 'success') { for (var i = 0; i < res.data.length; i++) { item[res.num][i].find("a").attr('data-ref', res.data[i].longUrl); item[res.num][i].find("a").attr('href', "javascript:void(0);"); item[res.num][i].find("a").attr('target', ''); // item[res.num][i].find("a").unbind("click"); item[res.num][i].find("a").click(function(e) { e.preventDefault(); obj.onclicks($(this).attr('data-ref')); }) } } }) } index_num += 1; }; const style = ` .gwd_taobao .gwd-minibar-bg, .gwd_tmall .gwd-minibar-bg { display: block; } .idey-minibar_bg{ position: relative; min-height: 40px; display: inline-block; } #idey_minibar{ width: 560px; background-color: #fff; position: relative; border: 1px solid #e8e8e8; display: block; line-height: 36px; font-family: 'Microsoft YaHei',Arial,SimSun!important; height: 36px; float: left; } #idey_minibar .idey_website { width: 48px; float: left; height: 36px; } #idey_minibar .minibar-tab { float: left; height: 36px; border-left: 1px solid #edf1f2!important; padding: 0; margin: 0; text-align: center; } #idey_minibar .idey_website em { background-position: -10px -28px; height: 36px; width: 25px; float: left; margin-left: 12px; } .setting-bg { background: url(https://cdn.gwdang.com/images/extensions/xbt/new_wishlist_pg5_2.png) no-repeat; } #idey_minibar .minibar-tab { float: left; height: 36px; border-left: 1px solid #edf1f2!important; padding: 0; margin: 0; width: 134px; } #idey_price_history span { float: left; width: 100%; text-align: center; line-height: 36px; color: #666; font-size: 14px; } #mini_price_history .trend-error-info-mini { position: absolute; top: 37px; left: 0px; width: 100%; background: #fff; z-index: 99999999; height: 268px; box-shadow: 0px 5px 15px 0 rgb(23 25 27 / 15%); border-radius: 0 0 4px 4px; width:559px; border: 1px solid #ddd; border-top: none; display:none; } .minibar-btn-box { display: inline-block; margin: 0 auto; float: none; } #mini_price_history .error-p { width: 95px; margin: 110px auto; height: 20px; line-height: 20px; text-align: center; color: #000!important; border: 1px solid #333; border-radius: 5px; display: block; text-decoration: none!important; } #mini_price_history:hover .trend-error-info-mini { display: block; } .collect_mailout_icon { background-position: -247px -134px; width: 18px; } #idey_mini_compare_detail li *, .mini-compare-icon, .minibar-btn-box * { float: left; } .panel-wrap{ width: 100%; height: 100%; } .collect_mailout_icon, .mini-compare-icon { height: 18px; margin-right: 8px; margin-top: 9px; } .all-products ul li { float: left; width: 138px; height: 262px; overflow: hidden; text-align: center; } .all-products ul li .small-img { text-align: center; display: table-cell; vertical-align: middle; line-height: 90px; width: 100%; height: 100px; position: relative; float: left; margin-top: 23px; } .all-products ul li a img { vertical-align: middle; display: inline-block; width: auto; height: auto; max-height: 100px; max-width: 100px; float: none; } .all-products ul li a.b2c-other-info { text-align: center; float: left; height: 16px; line-height: 16px; margin-top: 13px; } .b2c-other-info .gwd-price { height: 17px; line-height: 17px; font-size: 16px; color: #E4393C; font-weight: 700; width: 100%; display: block; } .b2c-other-info .b2c-tle { height: 38px; line-height: 19px; margin-top: 8px; font-size: 12px; width: 138px; margin-left: 29px; } .bjgext-mini-trend span { float: left; /*width: 100%;*/ text-align: center; line-height: 36px; color: #666; font-size: 14px; } .bjgext-mini-trend .trend-error-info-mini { position: absolute; top: 37px; left: 0px; width: 100%; background: #fff; z-index: 99999999; height: 268px; display: none; box-shadow: 0px 5px 15px 0 rgba(23,25,27,0.15); border-radius: 0 0 4px 4px; width: 460px; border: 1px solid #ddd; border-top: none; } .bjgext-mini-trend .error-p { width: 100%; float: left; text-align: center; margin-top: 45px; font-size: 14px; color: #666; } .bjgext-mini-trend .error-sp { width: 95px; margin: 110px auto; height: 20px; line-height: 20px; text-align: center; color: #000!important; border: 1px solid #333; border-radius: 5px; display: block; text-decoration: none!important; } .bjgext-mini-trend:hover .trend-error-info-mini { display: block; } #coupon_box.coupon-box1 { width: 560px; height: 125px; background-color: #fff; border: 1px solid #e8e8e8; border-top: none; position: relative; margin: 0px; padding: 0px; float: left; display: block; } #coupon_box:after { display: block; content: ""; clear: both; } .idey_tmall #idey_minibar { float: none; } .minicoupon_detail { position: absolute; top: 35px; right: -1px; height: 150px; width: 132px; display: none; z-index: 99999999999; background: #FFF7F8; border: 1px solid #F95774; } #coupon_box:hover .minicoupon_detail { display: block; } .minicoupon_detail img { width: 114px; height: 114px; float: left; margin-left: 9px; margin-top: 9px; } .minicoupon_detail span { font-size: 14px; color: #F95572; letter-spacing: 0; font-weight: bold; float: left; height: 12px; line-height: 14px; width: 100%; margin-top: 6px; text-align: center; } .coupon-box1 * { font-family: 'Microsoft YaHei',Arial,SimSun; } .coupon-icon { float: left; width: 20px; height: 20px; background: url('https://cdn.gwdang.com/images/extensions/newbar/coupon_icon.png') 0px 0px no-repeat; margin: 50px 8px 9px 12px; } #coupon_box .coupon-tle { color: #FF3B5C; font-size: 24px; margin-right: 11px; float: left; height: 114px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 375px; line-height: 114px; text-decoration: none!important; } #coupon_box .coupon-row{ color: #FF3B5C; font-size: 12px; margin-right: 11px; float: left; height: 60px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 100%; line-height: 60px; text-decoration: none!important; text-align: center; } #coupon_box .coupon-tle * { color: #f15672; } #coupon_box .coupon-tle span { margin-right: 5px; font-weight: bold; font-size: 14px; } .coupon_gif { background: url('https://cdn.gwdang.com/images/extensions/newbar/turn.gif') 0px 0px no-repeat; float: right; height: 20px; width: 56px; margin-top: 49px; } .click2get { background: url('https://cdn.gwdang.com/images/extensions/newbar/coupon_01.png') 0px 0px no-repeat; float: left; height: 30px; width: 96px; margin-top: 43px; } .click2get span { height: 24px; float: left; margin-left: 1px; } .c2g-sp1 { width: 50px; color: #FF3B5C; text-align: center; font-size: 14px; line-height: 24px!important; } .c2g-sp2 { width: 44px; line-height: 24px!important; color: #fff!important; text-align: center; } div#idey_wishlist_div.idey_wishlist_div { border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; } #qrcode{ float: left; width: 125px; margin-top:3px; } .elm_box{ height: 37px; border: 1px solid #ddd; width: 460px; line-height: 37px; margin-bottom: 3px; background-color: #ff0036; font-size: 15px; } .elm_box span{ width: 342px; text-align: center; display: block; float: left; color: red; color: white; }` function trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); } function removeEvent(that, href) { that.find("a").attr('target', ''); that.find("a").unbind("click"); that.find("a").bind("click", function(e) { e.preventDefault(); if (href != undefined) { obj.onclicks(href); } else { obj.onclicks($(this).attr('href')); } }) } obj.initStyle = function() { var styles = document.createElement('style') styles.type = 'text/css' styles.innerHTML = style; document.getElementsByTagName('head').item(0).appendChild(styles) } obj.initSearchHtml = function(selectorList) { setInterval(function() { selectorList.forEach(function(selector) { obj.initSearchItemSelector(selector); }); }, 3000); }; obj.initSearchEvent = function() { $(document).on("click", ".tb-cool-box-area", function() { var $this = $(this); if ($this.hasClass("tb-cool-box-wait")) { obj.basicQueryItem(this); } else if ($this.hasClass("tb-cool-box-info-translucent")) { $this.removeClass("tb-cool-box-info-translucent"); } else { $this.addClass("tb-cool-box-info-translucent"); } }); }; obj.basicQuery = function() { setInterval(function() { $(".tb-cool-box-wait").each(function() { obj.basicQueryItem(this); }); }, 3000); }; obj.initSearchItemSelector = function(selector) { $(selector).each(function() { obj.initSearchItem(this); }); }; obj.initSearchItem = function(selector) { var $this = $(selector); if ($this.hasClass("tb-cool-box-already")) { return; } else { $this.addClass("tb-cool-box-already") } var nid = $this.attr("data-id"); if (!obj.isVailidItemId(nid)) { nid = $this.attr("data-itemid"); } if (!obj.isVailidItemId(nid)) { if ($this.attr("href")) { nid = location.protocol + $this.attr("href"); } else { var $a = $this.find("a"); if (!$a.length) { return; } nid = $a.attr("data-nid"); if (!obj.isVailidItemId(nid)) { if ($a.hasClass("j_ReceiveCoupon") && $a.length > 1) { nid = location.protocol + $($a[1]).attr("href"); } else { nid = location.protocol + $a.attr("href"); } } } } if (obj.isValidNid(nid)) { obj.basicQueryItem($this, nid); } }; obj.basicQueryItem = function(selector, nid) { var $this = $(selector); $.get('https://tb.idey.cn/taobao.php?act=itemlink&itemid=' + nid, function(data) { if (data.type == 'success') { obj.changeUrl($this, data.data); } else { } }, 'json') }; obj.changeUrl = function(selector, data) { var $this = $(selector); var a = $this.find("a"); $this.find("a").attr('href', data.itemUrl); $this.find("a").attr('data-href', data.itemUrl); $this.find("a").click(function(e){ e.preventDefault(); obj.onclicks($(this).attr('data-href')); }) } obj.isDetailPageTaoBao = function(url) { if (url.indexOf("//item.taobao.com/item.htm") > 0 || url.indexOf("//detail.tmall.com/item.htm") > 0 || url.indexOf("//chaoshi.detail.tmall.com/item.htm") > 0 || url.indexOf( "//detail.tmall.hk/hk/item.htm") > 0) { return true; } else { return false; } }; obj.isVailidItemId = function(itemId) { if (!itemId) { return false; } var itemIdInt = parseInt(itemId); if (itemIdInt == itemId && itemId > 10000) { return true; } else { return false; } }; obj.isValidNid = function(nid) { if (!nid) { return false; } else if (nid.indexOf('http') >= 0) { if (obj.isDetailPageTaoBao(nid) || nid.indexOf("//detail.ju.taobao.com/home.htm") > 0) { return true; } else { return false; } } else { return true; } }; obj.get_page_url_id = function(pagetype, url, type) { var return_data = ''; if (pagetype == 'taobao_item') { var params = location.search.split("?")[1].split("&"); for (var index in params) { if (params[index].split("=")[0] == "id") { var productId = params[index].split("=")[1]; } } return_data = productId; } return return_data; } obj.get_type_url = function(url) { if ( url.indexOf("//item.taobao.com/item.htm") > 0 || url.indexOf("//detail.tmall.com/item.htm") > 0 || url.indexOf("//chaoshi.detail.tmall.com/item.htm") > 0 || url.indexOf("//detail.tmall.hk/hk/item.htm") > 0 || url.indexOf("//world.tmall.com") > 0 || url.indexOf("//detail.liangxinyao.com/item.htm") > 0 || url.indexOf("//detail.tmall.hk/item.htm") > 0 ) { return 'taobao_item'; } else if ( url.indexOf("//maiyao.liangxinyao.com/shop/view_shop.htm") > 0 || url.indexOf("//list.tmall.com/search_product.htm") > 0 || url.indexOf("//s.taobao.com/search") > 0 || url.indexOf("//list.tmall.hk/search_product.htm") > 0 ) { return 'taobao_list'; } else if ( url.indexOf("//search.jd.com/Search") > 0 || url.indexOf("//search.jd.com/search") > 0 || url.indexOf("//search.jd.hk/search") > 0 || url.indexOf("//search.jd.hk/Search") > 0 || url.indexOf("//www.jd.com/xinkuan") > 0 || url.indexOf("//list.jd.com/list.html") > 0 || url.indexOf("//search.jd.hk/Search") > 0 || url.indexOf("//coll.jd.com") > 0 ) { return 'jd_list'; } else if ( url.indexOf("//item.jd.hk") > 0 || url.indexOf("//pcitem.jd.hk") > 0 || url.indexOf("//i-item.jd.com") > 0 || url.indexOf("//item.jd.com") > 0 || url.indexOf("//npcitem.jd.hk") > 0 || url.indexOf("//item.yiyaojd.com") > 0 ) { return 'jd_item'; } else if ( url.indexOf("//miaosha.jd.com") > 0 ) { return 'jd_miaosha'; } else if ( url.indexOf("//www.jd.com") > 0 || url.indexOf("//jd.com") > 0 ) { return 'jd_index'; } } var pageurl = location.href; var pagetype = obj.get_type_url(pageurl); if (pagetype == 'taobao_item') { obj.initStyle(style); var productId = obj.get_page_url_id(pagetype, pageurl, pageurl); var couponurl = "https://www.idey.cn/api/index/recove_url?itemurl=" + encodeURIComponent(location.href) + '&itemid=' + productId; $.getJSON(couponurl, function(res) { var data = res.data; var couponArea = '
'; couponArea += '
'; couponArea += ''; couponArea += ''; couponArea += '
'; couponArea += '
'; couponArea +='
支付宝大额红包领取
' if (location.href.indexOf("//detail.tmall") != -1) { $(".tm-fcs-panel").after(couponArea); } else { $("ul.tb-meta").after(couponArea); } if (data.item_link.originalPrice) { $("#now_price").html('¥' + data.item_link.originalPrice); } if (data.item_link.actualPrice) { $("#coupon_price").html('¥' + data.item_link.actualPrice); } if (res.type == 'error' && data.item_link.itemUrl) { $('#qrcode').qrcode({ render: "canvas", //也可以替换为table width: 110, height: 110, text: data.item_link.itemUrl }); } else { $('#qrcode').qrcode({ render: "canvas", //也可以替换为table width: 110, height: 110, text: data.item_link.pageurl }); } }); } else if (pagetype == 'jd_item') { obj.initStyle(style); var productId = /(\d+)\.html/.exec(window.location.href)[1]; var couponurl = "https://shop.idey.cn/jd.php?act=recovelink&itemurl=" + encodeURIComponent(location.href) + '&itemid=' + productId; $.getJSON(couponurl, function(res) { var data = res.data; if (!obj.GetQueryString('jd.idey.cn') && data) { window.location.href = 'https://jd.idey.cn/red.html?url=' + encodeURIComponent(data); } }); var couponurls = "https://shop.idey.cn/jd.php?act=item&itemurl=" + encodeURIComponent(location.href) + '&itemid=' + productId; $.getJSON(couponurls, function(res) { var data = res.data; var couponArea = '
'; couponArea += '
'; couponArea += ''; couponArea += ''; couponArea += '
'; couponArea += '
'; couponArea +='
京东红包领取
' $(".summary-price-wrap").after(couponArea); if (data.couponLink) { $('#qrcode').qrcode({ render: "canvas", //也可以替换为table width: 125, height: 120, text: data.couponLink }); } else if (data.item_link.shortUrl) { $('#qrcode').qrcode({ render: "canvas", //也可以替换为table width: 125, height: 120, text: data.item_link.shortUrl }); } else { $('#qrcode').qrcode({ render: "canvas", //也可以替换为table width: 125, height: 120, text: data.item_link.longUrl }); } if (data.item_link.originalPrice) { $("#now_price").html('¥' + data.item_link.originalPrice); } if (data.item_link.actualPrice) { $("#coupon_price").html('¥' + data.item_link.actualPrice); } }); }else if (pagetype == 'taobao_list') { var url = location.href; if (url.indexOf("//s.taobao.com/search") > 0 || url.indexOf("//s.taobao.com/list") > 0) { selectorList.push(".items .item"); } else if (url.indexOf("//list.tmall.com/search_product.htm") > 0) { selectorList.push(".product"); selectorList.push(".chaoshi-recommend-list .chaoshi-recommend-item"); } else if (url.indexOf("//list.tmall.hk/search_product.htm") > 0) { selectorList.push("#J_ItemList .product"); } else if (document.getElementById('J_ShopSearchResult')) { selectorList.push("#J_ShopSearchResult .item"); } if (selectorList && selectorList.length > 0) { obj.initSearchHtml(selectorList); } }else if (pagetype == 'jd_list') { setInterval(obj.get_url, 300); } else if (pagetype == 'jd_miaosha') { $(".seckill_mod_goodslist li").find("a").click(function(e) { if ($(this).attr('data-ref')) { e.preventDefault(); obj.onclicks($(this).attr('data-ref')); } }) setInterval(obj.get_miaosha, 300); } else{ var setting = { time: 5E3 , audio: 1 , book: 1 , course: 0 , docs: 1 , face: 1 , http: '标清' , jump: 1 , line: '公网1' , lock: 1 , rate: '1' , read: '65' , review: 0 , scale: 0 , school: '账号为手机号可以不修改此参数' , total: 1 , username: '' , video: 1 , vol: '0' , auto: 0 , work: 1 , none: 0 , password: '' , queue: 1 } , _self = unsafeWindow , url = location.pathname , top = _self; setting.notice = '公告栏'; var tmpSubmit = 1; //本次 Object.defineProperty(setting, "auto" , { get: function () { if (tmpSubmit >= 2) { return tmpSubmit === 3; } return GM_getValue( "autosubmit"); } , set: function (value) { tmpSubmit = value + 2; } }); if (url != '/studyApp/studying' && top != _self.top) document.domain = location.host.replace(/.+?\./, ''); try { while (top != _self.top) { top = top.parent.document ? top .parent : _self.top; if (top.location.pathname == '/mycourse/studentstudy') break; } } catch (err) { // console.log(err); top = _self; } var $ = _self.jQuery || top.jQuery , parent = _self == top ? self : _self .parent , Ext = _self.Ext || parent.Ext || {} , UE = _self.UE , vjs = _self.videojs; String.prototype.toCDB = function () { return this.replace(/\s/g, '') .replace(/[\uff01-\uff5e]/g , function (str) { return String.fromCharCode(str .charCodeAt(0) - 65248); }) .replace(/[“”]/g, '"') .replace(/[‘’]/g, "'") .replace( /。/g, '.'); }; // setting.time += Math.ceil(setting.time * Math.random()) - setting.time / 2; setting.job = [':not(*)']; setting.normal = ''; // ':visible' setting.video && setting.job.push( 'iframe[src*="/video/index.html"]'); setting.book && setting.job.push( 'iframe[src*="/innerbook/index.html"]' ); setting.docs && setting.job.push( 'iframe[src*="/ppt/index.html"]' , 'iframe[src*="/pdf/index.html"]'); setting.work && setting.job.push( 'iframe[src*="/work/index.html"]'); setting.audio && setting.job.push( 'iframe[src*="/audio/index.html"]'); setting.tip = !setting.queue || top != _self && jobSort($ || Ext.query); function getIframe(tip, win, job) { if (!$) return Ext.get(frameElement || []) .parent() .child( '.ans-job-icon') || Ext.get([]); do { win = win ? win.parent : _self; job = $(win.frameElement) .prevAll( '.ans-job-icon'); } while (!job.length && win.parent .frameElement); return tip ? win : job; } function hookAudio() { _self.alert = console.log; var config = arguments[1]; config.plugins.studyControl .enableSwitchWindow = 1; config.plugins.seekBarControl .enableFastForward = 1; if (!setting.queue) delete config .plugins.studyControl; var player = vjs.apply(this , arguments) , a = '' , img = ''; player.volume(Math.round(setting .vol) / 100 || 0); player.playbackRate(setting.rate > 16 || setting.rate < 0.0625 ? 1 : setting.rate); Ext.get(player.controlBar.addChild( 'Button') .el_) .setHTML(a + img + '') .dom.title = '下载音频'; player.on('loadeddata', function () { setting.tip && this.play() .catch(Ext.emptyFn); }); player.one('firstplay', function () { setting.rate === '0' && config .plugins.seekBarControl .sendLog(this.children_[0] , 'ended', Math.floor(this .cache_.duration)); }); player.on('ended', function () { Ext.fly(frameElement) .parent() .addCls('ans-job-finished'); }); return player; } function checkPlayer(tip) { _self.videojs = hookVideo; hookVideo.xhr = vjs.xhr; Ext.isSogou = Ext.isIos = Ext .isAndroid = false; var data = Ext.decode(_self.config( 'data')) || {}; delete data.danmaku; data.doublespeed = 1; frameElement.setAttribute('data', Ext .encode(data)); if (tip) return; _self.supportH5Video = function () { return true; }; alert('此浏览器不支持html5播放器,请更换浏览器'); } if (url == '/mycourse/studentstudy') { _self.checkMobileBrowerLearn = $.noop; var classId = location.search.match( /cla[zs]{2}id=(\d+)/i)[1] || 0 , courseId = _self.courseId || location.search.match( /courseId=(\d+)/i)[1] || 0; setting.lock || $('#coursetree') .on( 'click' , '[onclick*=void], [href*=void]' , function () { _self.getTeacherAjax(courseId , classId, $(this) .parent() .attr('id') .slice(3)); }); } else if (url == '/ananas/modules/video/index.html' && setting.video) { if (setting.review) _self.greenligth = Ext.emptyFn; checkPlayer(_self.supportH5Video()); } else if (url == '/work/doHomeWorkNew' || url == '/api/work' || url == '/work/addStudentWorkNewWeb' || url == '/mooc2/work/dowork') { console.log("进入答题界面!"); if (!UE) { var len = ($ || Ext.query || Array)( 'font:contains(未登录)', document) .length; setTimeout(len == 1 ? top.location .reload : parent.greenligth , setting.time); } else if (setting.work) { setTimeout(relieveLimit, 0); beforeFind(); } } else if (url == '/ananas/modules/audio/index.html' && setting.audio) { if (setting.review) _self.greenligth = Ext.emptyFn; _self.videojs = hookAudio; hookAudio.xhr = vjs.xhr; } else if (url == '/ananas/modules/innerbook/index.html' && setting.book && setting.tip) { setTimeout(function () { _self.setting ? _self.top .onchangepage(_self .getFrameAttr('end')) : _self.greenligth(); }, setting.time); } else if (url.match( /^\/ananas\/modules\/(ppt|pdf)\/index\.html$/ ) && setting.docs && setting.tip) { setTimeout(function () { _self.setting ? _self .finishJob() : _self .greenligth(); }, setting.time); frameElement.setAttribute('download' , 1); } else if (url == '/knowledge/cards') { $ && checkToNext(); } else if (url.match( /^\/(course|zt)\/\d+\.html$/)) { setTimeout(function () { +setting.read && _self .sendLogs && $( '.course_section:eq(0) .chapterText' ) .click(); }, setting.time); } else if (url == '/ztnodedetailcontroller/visitnodedetail' ) { setting.read *= 60 / $( '.course_section') .length; setting.read && _self.sendLogs && autoRead(); } else if (url == '/mycourse/studentcourse') { var gv = location.search.match( /d=\d+&/g); setting.total && $('' , { href: '/moocAnalysis/chapterStatisticByUser?classI' + gv[1] + 'courseI' + gv[0] + 'userId=' + _self.getCookie( '_uid') + '&ut=s' , target: '_blank' , title: '点击查看章节统计' , style: 'margin: 0 25px;' , html: '本课程共' + $('.icon') .length + '节,剩余' + $( 'em:not(.openlock)') .length + '节未完成' }) .appendTo('.zt_logo') .parent() .width('auto'); } else if (url.match( /^\/visit\/(courses|interaction)$/ )) { setting.face && $('.zmodel') .on( 'click', '[onclick^=openFaceTip]' , DisplayURL); } else if (location.host.match( /^passport2/)) { setting.username && getSchoolId(); } else if (location.hostname == 'i.mooc.chaoxing.com') { _self.layui.use('layer', function () { this.layer.open( { content: '拖动进度条、倍速播放、秒过会导致不良记录!题库在慢慢补充,搜不到的题目系统会在次日进行自动补充' , title: '超星网课助手提示' , btn: '我已知悉' , offset: 't' , closeBtn: 0 }); }); } else if (url == '/widget/pcvote/goStudentVotePage') { $(':checked') .click(); $('.StudentTimu') .each(function ( index) { var ans = _self.questionlist[ index].answer; $(':radio, :checkbox', this) .each(function (num) { ans[num].isanswer && this .click(); }); $(':text', this) .val(function ( num) { return $(ans[num].content) .text() .trim(); }); }); } else if (url == '/work/selectWorkQuestionYiPiYue') { submitAnswer(getIframe() .parent(), $ .extend(true, [], parent._data)); } function jobSort($) { var fn = $.fn ? [getIframe(1) , 'length' ] : [self, 'dom'] , sel = setting.job.join( ', :not(.ans-job-finished) > .ans-job-icon' + setting.normal + ' ~ '); if ($(sel, fn[0].parent.document)[ 0] == fn[0].frameElement) return true; if (!getIframe()[fn[1]] || getIframe() .parent() .is('.ans-job-finished')) return null; setInterval(function () { $(sel, fn[0].parent.document)[ 0] == fn[0].frameElement && fn[0].location.reload(); }, setting.time); } function hookVideo() { _self.alert = console.log; var config = arguments[1] , line = Ext.Array.filter(Ext.Array .map(config.playlines, function ( value, index) { return value.label == setting .line && index; }) , function (value) { return Ext.isNumber(value); })[0] || 0 , http = Ext.Array.filter(config .sources , function (value) { return value.label == setting .http; })[0]; config.playlines.unshift(config .playlines[line]); config.playlines.splice(line + 1, 1); config.plugins .videoJsResolutionSwitcher.default = http ? http.res : 360; config.plugins.studyControl .enableSwitchWindow = 1; config.plugins.timelineObjects.url = '/richvideo/initdatawithviewer?'; config.plugins.seekBarControl .enableFastForward = 1; if (!setting.queue) delete config .plugins.studyControl; // config.preload = setting.tip ? 'auto' : 'none'; var player = vjs.apply(this , arguments) , a = '' , img = ''; player.volume(Math.round(setting .vol) / 100 || 0); Ext.get(player.controlBar.addChild( 'Button') .el_) .setHTML(a + img + '') .dom.title = '下载视频'; player.on('loadstart', function () { setting.tip && this.play() .catch(Ext.emptyFn); this.playbackRate(setting.rate > 16 || setting.rate < 0.0625 ? 1 : setting.rate); }); player.one(['loadedmetadata' , 'firstplay' ], function () { setting.two = setting.rate === '0' && setting.two < 1; setting.two && config.plugins .seekBarControl.sendLog(this .children_[0], 'ended', Math .floor(this.cache_.duration) ); }); player.on('ended', function () { Ext.fly(frameElement) .parent() .addCls('ans-job-finished'); }); return player; } function relieveLimit() { if (setting.scale) _self .UEDITOR_CONFIG.scaleEnabled = false; $.each(UE.instants, function () { var key = this.key; this.ready(function () { this.destroy(); UE.getEditor(key); }); }); } function findAnswer() { if (setting.num >= $('.TiMu') .length) { var arr = setting.lose ? [ '共有 ' + setting.lose + ' 道题目待完善(已深色标注)' , saveThis ] : ['答题已完成', submitThis]; setting.div.children('div:eq(0)') .data('html', arr[0]) .siblings( 'button:eq(0)') .hide() .click(); return setTimeout(arr[1], setting .time); } var $TiMu = $('.TiMu') .eq(setting .num) , question = filterImg($TiMu.find( '.Zy_TItle:eq(0) .clearfix')) .replace(/^【.*?】\s*/, '') .replace( /\s*(\d+\.\d+分)$/, '') .replace( /[(]\s*[)]。$/, '') .replace( /(\s*)。$/, '') .replace( /[(]\s*[)]$/, '') .replace( /(\s*)$/, '') .replace(/。$/, '') , type = $TiMu.find( 'input[name^=answertype]:eq(0)') .val() || '-1'; console.log($TiMu); if (question == "") { question = filterImg($TiMu.find( '.mark_name:eq(0) .colorDeep' )); } console.log($TiMu.find( '.mark_name:eq(0) .colorDeep')); GM_xmlhttpRequest( { method: 'POST' , url: 'http://cx.icodef.com/wyn-nb?v=2' , headers: { 'Content-type': 'application/x-www-form-urlencoded' , 'Authorization': '' , } , data: 'question=' + encodeURIComponent(question) + '&type=' + type + '&id=' + ($( '#workLibraryId') .val() || $('#oldWorkId') .val()) , timeout: setting.time , onload: function (xhr) { if (!setting .loop) {} else if (xhr .status == 200) { var obj = $.parseJSON(xhr .responseText) || {}; obj.answer = obj.data; if (obj.code) { setting.div.children( 'div:eq(0)') .text( '正在搜索答案...'); var td = '' : obj .answer; $( '' + td + ' text-align: center;">' + $TiMu.find( '.Zy_TItle:eq(0) i' ) .text() .trim() + '' + td + '" title="点击可复制">' + (question.match( '' + td + '" title="点击可复制">' + (/^http/.test( answer) ? obj .answer : '') + answer + '' + '' ) .appendTo(setting.div .find('tbody')) .css( 'background-color' , fillAnswer($TiMu .find('ul:eq(0)') .find('li'), obj , type) ? '' : 'rgba(0, 150, 136, 0.6)' ); setting.data[setting .num++] = { code: obj.code > 0 ? 1 : 0 , question: question , option: obj .answer , type: Number(type) }; } else { setting.div.children( 'div:eq(0)') .html( obj.answer || setting.over + '服务器繁忙,正在重试...'); } setting.div.children( 'span') .html(obj .msg || ''); } else if (xhr.status == 403) { var html = xhr .responseText.indexOf( '{') ? '请求过于频繁,请稍后再试' : $ .parseJSON(xhr .responseText) .data; setting.div.children( 'div:eq(0)') .data( 'html', html) .siblings( 'button:eq(0)') .click(); } else { setting.div.children( 'div:eq(0)') .html( '题库异常,可能被恶意攻击了...请等待恢复' ); } } , ontimeout: function () { setting.loop && setting.div .children('div:eq(0)') .html(setting.over + '服务器超时,正在重试...'); } }); } function submitAnswer($job, data) { $job.removeClass('ans-job-finished'); data = data.length ? $(data) : $( '.TiMu') .map(function () { var title = filterImg($( '.Zy_TItle .clearfix' , this)); return { question: title.replace( /^【.*?】\s*/, '') , type: ( { 单选题: 0 , 多选题: 1 , 填空题: 2 , 判断题: 3 })[title.match( /^【(.*?)】|$/)[1]] }; }); data = $.grep(data.map(function ( index) { var $TiMu = $('.TiMu') .eq( index); if (!($.isPlainObject(this) && this.type < 4 && $TiMu .find('.fr') .length)) { return false; } else if (this.type == 2) { var $ans = $TiMu.find( '.Py_tk, .Py_answer') .eq(0); if (!$TiMu.find('.cuo') .length && this.code) { return false; } else if (!$ans.find( '.cuo') .length) { this.option = $ans.find( '.clearfix') .map( function () { return $(this) .text() .trim(); }) .get() .join('#') || '无'; } else if (this.code) { this.code = -1; } else { return false; } } else if (this.type == 3) { var ans = $TiMu.find( '.font20:last') .text(); if ($TiMu.find('.cuo') .length) { this.option = ( { '√': '错误' , '×': '正确' })[ans] || '无'; } else if (!this.code) { this.option = ( { '√': '正确' , '×': '错误' })[ans] || '无'; } else { return false; } } else { var text = $TiMu.find( '.Py_answer > span:eq(0)' ) .text(); if ($TiMu.find('.dui') .length && this.code && ! /^A?B?C?D?E?F?G?$/.test( this.option)) { return false; } else if ($TiMu.find( '.dui') .length || text .match('正确答案')) { text = text.match( /[A-G]/gi) || []; this.option = $.map(text , function (value) { return filterImg( $TiMu.find( '.fl:contains(' + value + ') + a')); }) .join('#') || '无'; this.key = text.join(''); } else if (this.code) { this.code = -1; } else { return false; } } return this; }), function (value) { return value && value.option != '无'; }); setting.curs = $( 'script:contains(courseName)', top .document) .text() .match( /courseName:\'(.+?)\'|$/)[1] || $( 'h1') .text() .trim() || '无'; $job.addClass('ans-job-finished'); } function fillAnswer($li, obj, type) { var $input = $li.find( ':radio, :checkbox') , str = String(obj.answer) .toCDB() || new Date() .toString() , data = str.split(/#|\x01|\|/) , opt = obj.opt || str , state = setting.lose; // $li.find(':radio:checked').prop('checked', false); obj.code > 0 && $input.each(function ( index) { if (this.value == 'true') { data.join() .match( /(^|,)(正确|是|对|√|T|ri)(,|$)/ ) && this.click(); } else if (this.value == 'false') { data.join() .match( /(^|,)(错误|否|错|×|F|wr)(,|$)/ ) && this.click(); } else { var tip = filterImg($li.eq( index) .find('.after')) .toCDB() || new Date() .toString(); Boolean($.inArray(tip, data) + 1 || (type == '1' && str .indexOf(tip) + 1)) == this.checked || this .click(); } }) .each(function () { if (!/^A?B?C?D?E?F?G?$/.test( opt)) return false; Boolean(opt.match(this .value)) == this.checked || this.click(); }); if (type.match(/^[013]$/)) { $input.is(':checked') || (setting .none ? ($input[Math.floor(Math .random() * $input.length )] || $()) .click() : setting .lose++); } else if (type.match( /^(2|[4-9]|1[08])$/)) { data = String(obj.answer) .split( /#|\x01|\|/); str = $li.end() .find('textarea') .each(function (index) { index = (obj.code > 0 && data[ index]) || ''; if (obj.code > 0) { UE.getEditor(this.name) .setContent(index.trim()); } }) .length; (obj.code > 0 && data.length == str) || setting.none || setting .lose++; } else { setting.none || setting.lose++; } return state == setting.lose; } function submitThis() { if (!setting.auto) {} else if (!$( '.Btn_blue_1:visible') .length) { setting.div.children('button:lt(3)') .hide() .eq(1) .click(); return setting.regl(); } else if ($('#confirmSubWin:visible') .length) { var btn = $('#tipContent + * > a') .offset() || { top: 0 , left: 0 } , mouse = document.createEvent( 'MouseEvents'); btn = [btn.left + Math.ceil(Math .random() * 46), btn.top + Math.ceil(Math.random() * 26) ]; mouse.initMouseEvent('click', true , true, document.defaultView, 0 , 0, 0, btn[0], btn[1], false , false, false, false, 0, null); _self.event = $.extend(true , {} , mouse); delete _self.event.isTrusted; _self.form1submit(); } else { $('.Btn_blue_1')[0].click(); } setTimeout(submitThis, Math.ceil( setting.time * Math.random()) * 2); } function beforeFind() { setting.regl = parent.greenligth || $ .noop; if ($.type(parent._data) == 'array') return setting.regl(); var maximize = $( '
' ) .appendTo('body') .click( function () { $(setting.div) .css("display" , "block"); GM_setValue("minimize", "0"); $(maximize) .css("display" , "none"); }); setting.div = $( '
' + '' + '
正在搜索答案...
' + '
' + '
' + setting.notice + '
' + '' + '' + '' + '
' + '自动提交' + '
' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
题号题目(点击可复制)答案(点击可复制)
答案提示框 已折叠
' + '
' + '
' ) .appendTo('body') .on('click' , 'button, td, input' , function () { var len = $(this) .prevAll( 'button') .length; if (this.nodeName == 'TD') { $(this) .prev() .length && GM_setClipboard($(this) .text()); } else if (!$(this) .siblings() .length) { $(this) .parent() .text( '正在搜索答案...'); setting.num++; } else if (len === 0) { if (setting.loop) { clearInterval(setting.loop); delete setting.loop; len = ['已暂停搜索', '继续答题']; } else { setting.loop = setInterval( findAnswer, setting.time ); len = ['正在搜索答案...', '暂停答题']; } setting.div.children( 'div:eq(0)') .html( function () { return $(this) .data( 'html') || len[0]; }) .removeData('html'); $(this) .html(len[1]); } else if (len == 1) { setting.auto = !setting.auto; $(this) .html(setting.auto ? '取消本次自动提交' : '开启本次自动提交'); } else if (len == 2) { parent.location.reload(); } else if (len == 3) { setting.div.find( 'tbody, tfoot') .toggle(); } else if (this.id == "autosubmit") { // 题目自动提交配置 console.log(this.checked); GM_setValue("autosubmit", this .checked); } }) .on('click', 'minimize' , function () { $(this) .parent() .parent() .css( "display", "none"); GM_setValue("minimize", "1"); $(maximize) .css("display" , "block"); }) .find('table, td, th') .css( 'border', '1px solid') .end(); if (GM_getValue("minimize") == "1") { $(setting.div) .css("display" , "none"); $(maximize) .css("display", "block"); } setting.lose = setting.num = 0; setting.data = parent._data = []; setting.over = ''; setting.curs = $( 'script:contains(courseName)', top .document) .text() .match( /courseName:\'(.+?)\'|$/)[1] || $( 'h1') .text() .trim() || '无'; setting.loop = setInterval(findAnswer , setting.time); var tip = ( { undefined: '任务点排队中' , null: '等待切换中' })[setting.tip]; tip && setting.div.children( 'div:eq(0)') .data('html', tip) .siblings('button:eq(0)') .click(); } function autoRead() { $('html, body') .animate( { scrollTop: $(document) .height() - $(window) .height() }, Math.round(setting.read) * 1E3 , function () { $('.nodeItem.r i') .click(); }) .one('click', '#top', function ( event) { $(event.delegateTarget) .stop(); }); } function getSchoolId() { var school = /^1\d{10}$/.test(setting .username) ? '' : setting.school; if (!isNaN(school)) return setTimeout( toLogin, setting.time, school); if (school == '账号为手机号可以不修改此参数') return alert('请修改school参数'); $.getJSON('/org/searchUnis?filter=' + encodeURI(school) + '&product=44' , function (data) { if (!data.result) return alert( '学校查询错误'); var msg = $.grep(data.froms , function (value) { return value.name == school; })[0]; msg ? setTimeout(toLogin , setting.time, msg.schoolid ) : alert('学校名称不完整'); }); } function toLogin(fid) { GM_xmlhttpRequest( { method: 'GET' , url: '/api/login?name=' + setting.username + '&pwd=' + setting.password + '&schoolid=' + fid + '&verify=0' , onload: function (xhr) { var obj = $.parseJSON(xhr .responseText) || {}; obj.result ? location.href = decodeURIComponent($( '#ref, #refer_0x001') .val()) : alert(obj .errorMsg || 'Error'); } }); } function filterImg(dom) { return $(dom) .clone() .find('img[src]') .replaceWith(function () { return $('

') .text( ''); }) .end() .find('iframe[src]') .replaceWith(function () { return $('

') .text( '