// ==UserScript== // @name 老司机自动开车 V1.1.6 // @namespace 115helper.for.insider // @version 1.1.6 // @supportURL https://github.com/leozvc/115helper_for_insider/issues // @description 老司机自动开车-115离线助手, 自动抓取页面磁链同步至115离线 // @author insider // @require http://libs.baidu.com/jquery/1.10.2/jquery.min.js // @require http://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.min.js // @require https://apps.bdimg.com/libs/bootstrap/3.3.4/js/bootstrap.min.js // @resource bootstrapCSS http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.css // @resource bootstrapExCSS http://geekdream.com/bootstrapEx.css // @resource icon1 http://geekdream.com/image/115helper_icon_001.jpg // @match http*://*/* // @grant GM_xmlhttpRequest // @grant GM_addStyle // @grant GM_getResourceText // @grant GM_getValue // @grant GM_setValue // @grant GM_openInTab // @grant GM_notification // @grant GM_getResourceURL // @run-at document-end // @noframes // @downloadURL none // ==/UserScript== var css1 = GM_getResourceText ("bootstrapCSS"); GM_addStyle (css1); var css2 = GM_getResourceText ("bootstrapExCSS"); GM_addStyle (css2); var notification_url = ''; //chrome桌面通知默认点击跳转地址 var token_url = 'http://115.com/?ct=offline&ac=space&_='; //获取115 token接口 var lxURL = 'http://115.com/web/lixian/?ct=lixian&ac=add_task_url'; //添加115离线任务接口 var X_userID = 0; //默认115用户ID var Modal3; //icon图标 var icon = GM_getResourceURL('icon1'); function InitModal3() { $(document.body).append('
'); Modal3 = new Modal(); Modal3.renderto = "#modal3"; Modal3.InitShow = true; Modal3.btns = [{ id: "closebtn", text: "关闭" }]; tab1 = new Tab(); table_htmls = ''; Modal3.OnfirstInited = function (thismodal) { tab1.tabs = [ { id: "tabs1", title: '快速下载',active: true, bodyel: table_htmls },{ id: "tabs2", title: "作死买家秀", isiframe: true, url: "http://zuosi.la/" }]; tab1.renderto = thismodal.body; tab1.Init(); }; } //方法: 初始化方法 function _init() { //弹出框初始化 InitModal3(); Modal3.show(); Modal3.hide(); //扫码磁链,番号 c_m = check_magnets(); c_e = check_ed2ks(); if (c_m || c_e) { down_btn = ''; $("body").append(down_btn); } //115.com监测 do_115(); $("#down_btn").click(function(){ Modal3.show(); Modal3.setHeigth("400px"); Modal3.setWidth("900px"); Modal3.setTitle("老司机自动开车 V1.1.5"); }); //点击 下载到115 按钮 $(".download_to_115").click(function(){ $(this).button('loading').delay(1000).queue(function() { $(this).button('complete'); }); link = $(this).parents("tr").find(".link_url").val(); LXTo115(link); }); //点击 复制到粘贴板 按钮 $(".copy_magnetlink").click(function(){ $(this).button('loading').delay(1000).queue(function() { $(this).button('complete'); }); link = $(this).parents("tr").find(".link_url"); copy_link(link); }); } //访问115检查方案处理 function do_115() { //访问115.com 执行初始化 if (location.host.indexOf('115.com') >= 0) { if(location.href.indexOf('#115helper') < 0) { console.log("115离线助手:115.com, 不初始化."); return false; } console.log('115离线助手:115.com,尝试获取userid.'); X_userID = GM_getValue('X_userID', 0); if(X_userID !== 0) { console.log("115离线助手: 115账号:"+X_userID+",无需初始化."); return false; } X_userID = $.cookie("OOFL"); if(!X_userID) { console.log("115离线助手: 尚未登录115账号"); return false; }else{ console.log("115离线助手: 初始化成功"); notifiy('老司机自动开车-115离线助手', '登陆初始化成功,赶紧上车把!', icon, ""); GM_setValue('X_userID', X_userID); } return false; } } //检查115登陆状态 function check_115_login() { //X_userID X_userID = GM_getValue("X_userID", 0); if(X_userID === 0) { console.log("115离线助手: 尚未初始化"); notifiy("老司机自动开车-115离线助手", '点击初始化115助手', icon, 'http://115.com#115helper' ); return false; } console.log("115离线助手: 115账号:"+X_userID); return true; } //方法: 未登陆115处理 function nologin() { notifiy("老司机自动开车-115离线助手", '115登陆失效,点击重新登陆', icon, 'http://115.com' ); GM_setValue('X_userID', 0); return false; } //方法: 通用chrome通知 function notifiy(title, body, icon, click_url) { var notificationDetails = { text: body, title: title, timeout: 10000, image: icon, onclick: function() { window.open(click_url); } }; GM_notification(notificationDetails); } //方法 添加115离线任务方法 function LXTo115(url) { GM_xmlhttpRequest({ method: 'GET', url: token_url + new Date().getTime(), onload: function (responseDetails) { if (responseDetails.responseText.indexOf('html') >= 0) { //未登录处理 return nologin(); } var sign115 = JSON.parse(responseDetails.response).sign; var time115 = JSON.parse(responseDetails.response).time; downTo115(url, X_userID, sign115, time115); } }); } //方法 添加到面板 function addToboard(url) { html = '
'; $("#links tbody").append(html); } //POST提交下载任务 function downTo115(url, X_userID, sign115, time115) { GM_xmlhttpRequest({ method: 'POST', url: lxURL, headers:{ "Content-Type":"application/x-www-form-urlencoded" }, data:"url="+encodeURIComponent(url)+"&uid="+X_userID+"&sign="+sign115+"&time="+time115, onload: function (responseDetails) { var lxRs = JSON.parse(responseDetails.responseText); //离线结果 if (lxRs.state) { //离线任务添加成功 notifiy("老司机自动开车-115离线助手", '上车咯,点击进入网盘', icon, 'http://115.com/?tab=offline&mode=wangpan' ); } console.log("磁链:"+url+" 下载结果:"+ lxRs.state+" 原因:"+lxRs.error_msg); } }); } //magnet链接检测 function check_magnets() { var magnets = $("body").html().match(/magnet:\?xt=urn:btih:[0-9a-zA-Z]{40}/g); if(magnets) { $.each(magnets, function(i, n){ var magnet = n; console.log("发现magnet磁链: "+magnet); //LXTo115(magnet); addToboard(magnet); }); return true; } return false; } //ed2k链接检测 function check_ed2ks() { var ed2ks = $("body").html().match(/ed2k:\/\/[^'"]*/g); if(ed2ks) { $.each(ed2ks, function(i, n){ var ed2k = n; console.log("发现ed2k: "+ed2k); //LXTo115(ed2k); addToboard(ed2k); }); return true; } return false; } //复制链接 function copy_link(link) { link.select(); document.execCommand("copy"); alert("复制成功\n\n如浏览器不支持此操作,请手动复制"); } //boostrapEx modal var bootstrapEx = {}; bootstrapEx.language = { Modal: { title: function () { return "窗口标题"; }, closebtn: function () { return "关闭"; } } }; (function ($) { doCallback = function (fn, args) { return fn.apply(this, args); } //modal弹出层 Modal = function () { var _Modal = { renderto: "",//绘制ID header: null,//头元素 body: null,//body元素 footer: null,//footer元素 btns: [],//按钮组 title: bootstrapEx.language.Modal.title(),//title showclosebtn: true,//显示关闭按钮 InitMax: true,//是否最大化 firstInit: false, setHeigth: function (h) { var t = this; $(t.renderto).find('.modal-body').css('min-height', h);// - 110 * 2 $(window).resize(function () { $(t.renderto).find('.modal-body').css('min-height', h);// - 110 * 2 }); },//设置高度 setWidth: function (w) { var t = this; $(t.renderto).find('.modal-dialog').css('width', w);// - 200 * 2 $(window).resize(function () { $(t.renderto).find('.modal-dialog').css('width', w);// - 200 * 2 }); },//设置宽度 modal: { show: true, backdrop: 'static' }, Init: function (isshow) { var t = this; $(t.renderto).html(''); var body = t.body; t.header = null; t.body = null; t.footer = null; if (!$(t.renderto).hasClass('modal')) { $(t.renderto).addClass('modal'); } if (!$(t.renderto).hasClass('fade')) { $(t.renderto).addClass('fade'); } $(t.renderto).append(''); t.header = $(''); if (t.showclosebtn) { $(t.header).append(''); } $(t.header).append(''); $(t.renderto).find(".modal-content").append(t.header); t.body = $(''); $(t.renderto).find(".modal-content").append(t.body); t.body.append(body); t.footer = $(''); $(t.renderto).find(".modal-content").append(t.footer); t.btns.forEach(function (btn) { var btnclass = btn.class || "btn-primary"; var _b = ""; if (btn.id != "closebtn") { _b = $(''); $(_b).addClass(btnclass); } else { _b = $(''); } $(t.footer).append(_b); }, this); if (t.InitMax) { $(t.renderto).find('.modal-dialog').css('width', $(window).width() - 150 * 2);// - 200 * 2 $(t.renderto).find('.modal-body').css('min-height', $(window).height() - 110 * 2);// - 150 * 2 } if (isshow) { var moopt = { show: true, backdrop: 'static' };//keyboard moopt = $.extend(moopt, t.modal); $(t.renderto).modal(moopt); } $(t.renderto).on('shown.bs.modal', function () { try { eval(t.renderto.replace("#", "").replace(".", "") + "_Show();"); } catch (ex) { } }) $(t.renderto).on('hide.bs.modal', function () { try { eval(t.renderto.replace("#", "").replace(".", "") + "_Hide();"); } catch (ex) { } }) $(t.renderto).on('hidden.bs.modal', function () { try { eval(t.renderto.replace("#", "").replace(".", "") + "_Hideend();"); } catch (ex) { } }) t.firstInit = true; doCallback(t.OnfirstInited, [t]); }, setTitle: function (title) {//设置标题 var t = this; t.title = title; $(t.header).find('.modal-title').html(t.title); }, toggle: function () {//设置是否显示 var t = this; $(t.renderto).modal('toggle'); }, show: function () {//显示 var t = this; if (!t.firstInit) { t.Init(); } var moopt = { show: true, backdrop: 'static' };//keyboard moopt = $.extend(moopt, t.modal); $(t.renderto).modal(moopt); }, hide: function () {//关闭 var t = this; $(t.renderto).modal('hide'); }, OnfirstInited: function () { } } return _Modal; } //页签tab Tab = function () { var tabdefault = function () { var _tab = { id: "",//id title: "",//标题 url: "",//地址 isiframe: false,//是否生成ifram active: false,//是否激活 iframe: null,//ifram iframefn: null,//返回ifram 的中的contentWindow对象 执行function 返回 tabel: null,//页签元素 bodyel: null,//body元素 load: null,//load 事件触发 showclosebtn: false }; return _tab; } var _tabs = { renderto: "",//绘制ID navtabs: null, tabcontent: null, tabs: [], fade: true,//是否显示过度效果 firstInit: false, show: function (tab) { var tabindex; var t = this; if (!t.firstInit) { t.init(); } if (typeof tab == "number") { tabindex = parseInt(tab); } else if (typeof tab == "object") { tabindex = t.tabs.indexOf(tab); } $(t.renderto).find('li').removeClass('active'); $(t.renderto).find('div.tab-pane').removeClass('active'); if ($(t.renderto).find('li').eq(tabindex).css("display") == 'none') { $(t.renderto).find('li').eq(tabindex).css("display", "inline"); } $(t.renderto).find('li').eq(tabindex).addClass('active'); $(t.renderto).find('div.tab-pane').eq(tabindex).addClass('active'); if ($(t.renderto).find('div.tab-pane').eq(tabindex).hasClass('fade') && !$(t.renderto).find('div.tab-pane').eq(tabindex).hasClass('in')) { $(t.renderto).find('div.tab-pane').eq(tabindex).addClass('in'); } if (t.tabs && t.tabs[tabindex] && t.tabs[tabindex].id) { eval("var fun;try{fun=" + t.tabs[tabindex].id + "_onactive;}catch(ex){}"); if (fun) { fun(t); } } }, hide: function (tab) { var tabindex; var t = this; if (typeof tab == "number") { tabindex = parseInt(tab); } else if (typeof tab == "object") { tabindex = t.tabs.indexOf(tab); } if (t.tabs.length == 1 && tabindex == 0) { return }; $(t.renderto).find('li').eq(tabindex).css("display", "none"); //隐藏后显示后一个,如果后一个本来就隐藏就显示再后一个 for (var k = tabindex - 1; k >= 0 && k <= t.tabs.length - tabindex; k--) { if ($(t.renderto).find('li').eq(k).css("display") != 'none') { t.show(k); break; } } if (t.tabs && t.tabs[tabindex] && t.tabs[tabindex].id) { eval("var fun;try{fun=" + t.tabs[tabindex].id + "_onhide;}catch(ex){}"); if (fun) { fun(t); } } }, Init: function () {//绘制方法 var t = this; t.navtabs = $(''); t.tabcontent = $('
'); $(t.renderto).append(t.navtabs); $(t.renderto).append(t.tabcontent); var is_active = false; $.each(t.tabs, function (i, _tab) { tab = $.extend(tabdefault(), _tab); tab.tabel = $('
  • ' + tab.title + '
  • '); if (tab.showclosebtn) { tab.tabel = $('
  • ' + tab.title + ' 
  • '); } var bodyel = tab.bodyel; tab.bodyel = $('
    '); if (tab.isiframe) { tab.iframe = $(''); $(tab.bodyel).append(tab.iframe); } if (t.fade) { $(tab.bodyel).addClass("fade"); $(tab.bodyel).addClass("in"); } if (!is_active && tab.active) { is_active = true; $(tab.tabel).addClass("active"); $(tab.bodyel).addClass("active"); } $(t.navtabs).append(tab.tabel); $(t.tabcontent).append(tab.bodyel); tab.bodyel.append(bodyel); t.tabs[i] = tab; if (document.getElementById(tab.id + '_iframe') && document.getElementById(tab.id + '_iframe').contentWindow) { tab.iframefn = document.getElementById(tab.id + '_iframe').contentWindow; } tab.iframe = $('#' + tab.id + '_iframe'); var load; if (tab.load) { load = tab.load; $('#' + tab.id + '_iframe').load(function () { load(this); }); } }) //$(t.renderto).find('.tab-pane').css('min-height', $(t.renderto).height()); setTimeout(function () { $(t.renderto).find('.tab-pane').find('iframe').css('min-height', $(window).height() - 140 * 2); }, 200); $(t.navtabs).find('[tabsindex]').on('click', function () { t.hide(parseInt($(this).attr('tabsindex'))); return false; }) t.firstInit = true; doCallback(t.OnfirstInited, [t]); }, isactive: function (tab) { var tabindex; var t = this; if (typeof tab == "number") { tabindex = parseInt(tab); } else if (typeof tab == "object") { tabindex = t.tabs.indexOf(tab); } if (tabindex == 0) { return }; return $(t.renderto).find('li').eq(tabindex).css("display") != 'none'; }, OnfirstInited: function () { } }; return _tabs; } getNowDateInt = function () { var date = new Date(); var seperator1 = "-"; var seperator2 = ":"; var month = date.getMonth() + 1; var strDate = date.getDate(); if (month >= 1 && month <= 9) { month = "0" + month; } if (strDate >= 0 && strDate <= 9) { strDate = "0" + strDate; } var currentdate = date.getFullYear() + month + strDate + date.getHours() + date.getMinutes() + date.getSeconds(); return currentdate; } })(jQuery); //入口运行 _init(); ///* */