// ==UserScript== // @name 学术下载解析工具-知网-万方-维普 // @namespace http://tampermonkey.net/ // @version 1.2 // @description 去其他 // @author XiaoM // @match https://*.cnki.net/kns8s/* // @match https://*.cnki.net/kcms2/* // @match https://d.wanfangdata.com.cn/* // @match https://lib.cqvip.com/Qikan/Article/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant unsafeWindow // @require https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js // @require https://unpkg.com/layui@2.8.18/dist/layui.js // @connect xuexi365.top // @connect wanfangdata.com.cn // @grant GM_xmlhttpRequest // @grant GM_getResourceText // @grant GM_cookie // ==/UserScript== (function () { 'use strict'; /* globals jQuery, $, waitForKeyElements */ var $ = unsafeWindow.jQuery; //this.$ = this.jQuery = jQuery.noConflict(true); // @require file://D:\Microsoft VS Code\project\ZW下载\index.js var link = document.createElement('link'); link.rel = "stylesheet" link.href = 'https://unpkg.com/layui@2.8.18/dist/css/layui.css'; document.head.appendChild(link); // var script = document.createElement('script'); // script.src = 'http://www.xuexi365.top/msg.js?'+Date.now(); // document.head.appendChild(script); var msgJson=""; var help_content=""; GM_xmlhttpRequest({ method: "GET", url: "http://www.xuexi365.top/msg.json?"+Date.now(), anonymous: true, responseType :"json", headers: { "Content-Type": "application/json" }, onload: function (res) { msgJson=res.response; help_content=decodeURIComponent(msgJson.updata_content)+decodeURIComponent(msgJson.link_content)+decodeURIComponent(msgJson.use_content); if(msgJson.msg_active!=0){ layer.open({ type: 1, offset: ['16px', '16px'], // 详细可参考 offset 属性 id: 'ID-demo-layer-offset-1', // 防止重复弹出 content:'
'+ msgJson.msg_content +'
', area: '240px', title:false, btn: ['确定 [ 8秒后关闭 ]'], time:8000, anim:2, //offset:'rb', btnAlign: 'c', // 按钮居中 shade: 0, // 不显示遮罩 btn1: function(){ layer.closeAll(); } }); } }, onerror: function () { } }); function download(url, data) { var loadIndex = layer.msg('正在获取下载地址', { icon: 16, shade: 0.11, time: 300000, shadeClose: false }); //console.log({dataFilename,dataDbname,orderid}) //let url="http://www.xuexi365.top/api_zw/RTVC875CY" GM_xmlhttpRequest({ method: "POST", url: url, data: data, anonymous: true, headers: { "Accept": "application/json, text/javascript, */*; q=0.01", "Content-Type": "application/json; charset=utf-8" }, onload: function (res) { console.log(res.responseText) try { var json = JSON.parse(res.responseText); } catch (err) { layer.close(loadIndex); layer.alert("[0X86889]网络错误,请重试,如多次错误,请联系管理源"); return; } try { $.isEmptyObject(json.data.code) } catch (err) { layer.close(loadIndex); layer.alert("[0X83889]网络错误,请重试,如多次错误,请联系管理源"); return; } if (json.data.code > 0) { layer.close(loadIndex); layer.alert(json.data.msg); window.open(json.data.url, "_blank"); } else { layer.close(loadIndex); layer.alert(json.data.msg); } }, onerror: function () { layer.close(loadIndex); layer.alert('出现错误,请重试'); } }); } layui.use(function () { var util = layui.util; var bars = []; if (location.pathname.search('kns8s') > 0) { //查询页面 } else if (location.pathname.search('kcms2') > 0) { //详情页面 bars = [{ // 定义可显示的 bar 列表信息 -- v2.8.0 新增 type: 'help', style: 'background-color: #ff5722', icon: 'layui-icon-app' }, { type: 'download_caj', icon: 'layui-icon-download-circle', style: 'background-color: #3594ff;' }, { type: 'download_pdf', icon: 'layui-icon-download-circle', style: 'background-color: #5d9e2b;' }] } else if (location.origin == 'https://d.wanfangdata.com.cn') { //万方 bars = [{ // 定义可显示的 bar 列表信息 -- v2.8.0 新增 type: 'help', icon: 'layui-icon-app', style: 'background-color: #ff5722' }, { type: 'download_wf', icon: 'layui-icon-download-circle', style: 'background-color: #5d9e2b;' }] }else if (location.origin == 'https://lib.cqvip.com') { //维普 bars = [{ // 定义可显示的 bar 列表信息 -- v2.8.0 新增 type: 'help', icon: 'layui-icon-app', style: 'background-color: #ff5722' }, { type: 'download_vp', icon: 'layui-icon-download-circle', style: 'background-color: #5d9e2b;' }] } // 自定义固定条 util.fixbar({ bars: bars, // bar1: true, // bar2: true, default: false, // 是否显示默认的 bar 列表 -- v2.8.0 新增 // bgcolor: '#393D52', // bar 的默认背景色 css: { bottom: 200 }, // target: '#target-test', // 插入 fixbar 节点的目标元素选择器 // duration: 300, // top bar 等动画时长(毫秒) on: { // 任意事件 -- v2.8.0 新增 mouseenter: function (type) { if (type == 'help') { var content = "如何使用" } else if (type == 'download') { var content = "帮我下载" } else if (type == 'download_caj') { var content = "下载CAJ" } else if (type == 'download_pdf') { var content = "下载PDF" } else if (type == 'download_wf') { var content = "下载PDF" }else if (type == 'download_vp') { var content = "下载PDF" } layer.tips(content, this, { tips: 4, fixed: true }); }, mouseleave: function (type) { layer.closeAll('tips'); } }, // 点击事件 click: function (type) { console.log(this, type); if (type == 'help') { // layer.open({ // type: 1, // area: ['420px', '240px'], // 宽高 // content: '' // }); layer.open({ type: 1, offset: 'l', anim: 'slideRight', // 从左往右 area: ['320px', '100%'], shade: 0.1, shadeClose: true, id: 'ID-demo-layer-direction-l', content: help_content }); } else if (type == 'download') { var selectCount = $("#selectCount").text(); if (selectCount != 1) { layer.tips("请查看这里,是否选定的不是一个", "#selectCount", { tips: [1, '#ff5722'], time: 10000 }) layer.msg('您没有选择或则选择了多个!'); return } var FileNameSNZKPT = localStorage.getItem('FileNameSNZKPT'); var input = $('input[value="' + FileNameSNZKPT + '"]').val() if (input != FileNameSNZKPT) { layer.msg('请查看是否选择的内容不在本页面!'); return } //children('.icon-collect').attr('data-filename') var dataFilename = $('input[value="' + FileNameSNZKPT + '"]').parent("td").parent("tr").find('.icon-collect').attr("data-filename"); var dataDbname = $('input[value="' + FileNameSNZKPT + '"]').parent("td").parent("tr").find('.icon-collect').attr("data-dbname"); var orderid = $('input[value="' + FileNameSNZKPT + '"]').parent("td").parent("tr").find('.downloadlink').attr("href"); const regex = /order\?id=(.*)/i; var match = regex.exec(orderid); if (match) { orderid = match[1] } layer.confirm('这里下载可能是CAJ格式,需要PDF需要进入文章详情页点击按钮,确定要下载码?', { icon: 3 }, function () { let url = "http://www.xuexi365.top/api_zw/RTVC875CY" let data = JSON.stringify({ 'dataFilename': dataFilename, 'dataDbname': dataDbname, 'orderId': orderid }) download(url, data) }, function () { // layer.msg('点击取消的回调'); }); } else if (type == 'download_caj' || type == 'download_pdf') { var dataFilename = $('#param-filename').val(); var dataDbname = $('#param-dbname').val(); if (type == 'download_caj') { var orderid = $('#cajDown').attr("href"); } else if (type == 'download_pdf') { var orderid = $('#pdfDown').attr("href"); } const regex = /order\?id=(.*)/i; var match = regex.exec(orderid); if (match) { orderid = match[1] } let url = "http://www.xuexi365.top/api_zw/RTVC875CY" let data = JSON.stringify({ 'dataFilename': dataFilename, 'dataDbname': dataDbname, 'orderId': orderid }) download(url, data) } else if (type == 'download_wf') { //var downloadlink=$('.download .buttonItem').attr("href"); var downloadlink = $('.download').attr("href"); console.log(downloadlink) GM_xmlhttpRequest({ method: "HEAD", url: downloadlink, anonymous: true, onload: function (res) { var url = res.finalUrl; console.log("url:",url) // 解析URL参数 var params = new URL(url); // 获取指定参数的值 var paramValue = params.searchParams.get("service"); console.log(paramValue); let queryurl = "http://www.xuexi365.top/api_wf/EDIDN5D5DP" let data = JSON.stringify({ 'url': downloadlink }) download(queryurl, data) }, onerror: function () { layer.close(loadIndex); layer.alert('出现错误,请重试'); } }); }else if (type == 'download_vp') { //var downloadlink=$('.download .buttonItem').attr("href"); // var downloadlink = $('.download').attr("href"); // console.log(downloadlink) // let queryurl = "http://www.xuexi365.top/api_vp/LDIDN0D5DP" // let data = JSON.stringify({ 'id': downloadlink,'info':'' }) // download(queryurl, data) var fullText=$('.icon-free').parent('a').attr('onclick') var startIndex = fullText.indexOf("(") + "(".length; var endIndex = fullText.indexOf(")", startIndex); var extractedText = fullText.substring(startIndex, endIndex); var str_arr= extractedText.split(','); var id=str_arr[0].replace(/'/g, ""); var info=str_arr[1].replace(/'/g, ""); //console.log(id,info) let queryurl = "http://www.xuexi365.top/api_vp/LDIDN0D5DP" let data = JSON.stringify({ 'id': id,'info':info }) console.log(data) download(queryurl, data) } } }); //隐藏知网原本滚动条 $('.fixedbar').hide(); $('.anxs-left-bom').hide(); $('.web-tools').hide(); }); })();