// ==UserScript== // @name [新]全网VIP视频免费破解去广告,支持电视剧免跳出选集、知乎使用增强、B站哔哩哔哩使用增强、全网音乐直接下载、百度文库下载等多合一纯净脚本 // @namespace coolhii_vip // @version 4.1.0 // @description 【组合型多功能脚本,完全免费】【1】全网VIP视频免费破解去广告(支持自定义接口):支持爱奇艺、腾讯、芒果、优酷、哔哩哔哩等;【2】知乎使用增强:外链接直接跳出、问题,回答时间标注、短视频下载方便保存等;【3】B站哔哩哔哩使用增强、番剧大会员VIP视频解析、视频下载、一键三联、浏览记录提醒;【4】全网音乐有声音频免客户端下载,支持网易云音乐、QQ音乐、酷狗、喜马拉雅、咪咕等;【5】优惠券查询 // @author 橘子爱哭,爱画画的猫 // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAE7ElEQVRoQ+2ZTWwbRRTH/2+dqKGoTZu1AwlIgFRxAw5cQEIoIC5IwIUDghO0u1tQqLJOaYoSYm/itEWkJGsCKKxNyAkkOMCJE1IKJ7hUqsSJDymgCkT8EdSKiHx4H7KdTdeb/fA6zpfInizNzHv/37wZz7w3hG364nL+KWYeLpsnotRkJvrNdriiZhtV5YWnwcIwCI/abTPwfYSF1ES24+tm+mwaQJ+ce04AJRh4OEDgVRBSuhH9qhkgWwbolwvPm0AS4AdCCSL6kYHRtCF+EWqco3PDAKpUfBFkagDu34oAgH8mimiTRsenjdgJDaDKCy8DQhLAvY049BkzD5gjeqZzNozd0ACW8biUU5ioDNIdxqGzLwN/AKylM7FMI3YaBrCc9Sn514nLIBwNJ4DzDEqmM9EPw42r7b1lgI2IKIU4gzUwjgYIukGgxGRGTG9FuDU2NIAq5XpKEH6ZyorX3QSoSnGA2BxhoM3eTsC/JnMinY2Nu40bkAp3r8A8oWdjV8KANQQAojkQGS3C6vDl6TsX3Bz2yQtvESIjlTbihG5EL7j1e+PVm52l0soYg2UwP7FzALfUTGE1ktBnj/8dZuZUdfEYlkpjYPRujNslgHX/dPkYLSc1o3vJD0RT+PAi58cIFN/Ub3cBqnKIcLG9W0xqGq3ZBWoatyxeL6SI8KYn4F4AsC2HET0bK5/UUKWchuqZ4f8dAATNUHU2eyr/QkEf80EEguaosufq6WTvs+8jcPbU4j0loZQAcNIXPvQSopmIKYy++/Hx38JMaugIWMZVJdcFk8qp42uuDusEIGCa6bZR3bj9zzDCrb4NA1gGentviC0rq0MErj2YAgCI6L221tbRSx8cLTQiPDRA/NTCCRbwmFfCMXAyd2Q1QkMMnK8Y9wAgovHWNTP1zkzsppvwuFR4hVtW5vTprvl6wAIj0Cf99SAJLYNgfmHdoG/mdOYMH4osF4dgmqb9ICOiyFqbODY1RctuwlQp3wvCoC1BmhXAlyYysZ/8QDwB+qXCI6bAg2A862GgDJLSM50zbu3MTETE1WDc+u3sG5eK55hM1SezmxWEkj7x0R3X3PxsAlCl/JMQoPoId9qZJ2C8/S7RcN5/vGZOUbj1sJkfApEcIiWdZcJ02oj+YLe7AdAvF58xyVRCCN8EwszvHzJheK3v80qxfdksxUMKd/jhz8AwrLyBmiDcCfI7CEZp9ZAx9cmRXLlRVf7pgrl0emvCa90Q8CUEMvY/gMXVhEjM78oScsZ/325iJ8i++RtV5fzc+qnpWs7YqwfZ+q04Saqcrxw2AK74geyVq4QlHEBPWbQdwFpFviDOpbZTlzmn8I3LnC0CTm2+IDt1nfYSXg+Aa0R2KqEJEh4GwHk1rjOpJ03PipXSoioVkiCulFh8P1tZpd5SjNse2Oyj9m5/AOAZhf9nBKTCtyB+PGBt2otUDSyh8KXFuvYA83eVfKBykUNpDKCHXEFC7IFmFXcDAK4KLAyXH81rMrK4knsJLJQfG+6rAakLoLnldQ+AXwk0OJkRP9/4G3Wb8T4ld5qYLgLoqLT7A2zLA0cNAKMAogE9I27Kv32rEnEld5YhvA3TvGCrMFT3QMATU9BfvtXu9cS0DjAEpnN6VtS97AWWVaoHUU6zA/g98tUr3NnP+chXPvysg9DPZl0AjYraiXH/ARKAvXii7yqAAAAAAElFTkSuQmCC // @include *://wenku.baidu.com/* // @include *://*.youku.com/v_* // @include *://*.iqiyi.com/v_* // @include *://*.iqiyi.com/w_* // @include *://*.iqiyi.com/a_* // @include *://*.le.com/ptv/vplay/* // @include *://v.qq.com/x/cover/* // @include *://v.qq.com/x/page/* // @include *://*.tudou.com/listplay/* // @include *://*.tudou.com/albumplay/* // @include *://*.tudou.com/programs/view/* // @include *://*.mgtv.com/b/* // @include *://film.sohu.com/album/* // @include *://tv.sohu.com/v/* // @include *://*.baofeng.com/play/*. // @include *://vip.pptv.com/show/* // @include *://v.pptv.com/show/* // @include *music.163.com* // @include *://y.qq.com* // @include *://www.kugou.com* // @include *://www.kuwo.cn* // @include *://www.lizhi.fm* // @include *://*.ximalaya.com* // @include *://music.migu.cn* // @include *://item.taobao.com/* // @include *://*detail.tmall.com/* // @include *://*detail.tmall.hk/* // @include *://*product.suning.com/* // @include *://*item.jd.com/* // @include *://item.yiyaojd.com/* // @include *://npcitem.jd.hk/* // @include *://*detail.vip.com/* // @include *://*mobile.yangkeduo.com/goods* // @include *://*.zhihu.com/* // @include *://v.vzuu.com/video/* // @include *://video.zhihu.com/video/* // @include *://www.bilibili.com/** // @include *://search.bilibili.com/** // @include *://space.bilibili.com/** // @connect api.bilibili.com // @connect pcw-api.iqiyi.com // @connect zhihu.com // @connect vzuu.com // @connect t.mimixiaoke.com // @connect t.jtm.pub // @grant GM_xmlhttpRequest // @grant GM_getResourceText // @grant GM_getValue // @grant GM_setValue // @grant GM_openInTab // @grant GM_download // @grant GM_info // @grant GM_registerMenuCommand // @require https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.2.1/jquery.min.js // @run-at document-idle // @charset UTF-8 // @license AGPL License // @original-script https://greasyfork.org/zh-CN/scripts/418804 // @original-author 爱画画的猫 // @original-license AGPL License // @original-changes 已经获得原作者的完全授权,在源码使用出也做了相应版权说明,特此申明 // @antifeature referral-link // @downloadURL none // ==/UserScript== (function() { 'use strict'; /* * VIP解析部分代码借鉴以下脚本,哔哩哔哩部分代码 * 脚本地址:https://greasyfork.org/zh-CN/scripts/418804 * 作者:爱画画的猫,代码已经授权,在原作者的基础上优化了代码逻辑,修复了部分bug */ function ToolObject(){ this.GMgetValue = function (name, value) { if (typeof GM_getValue === "function") { return GM_getValue(name, value); } else { return GM.getValue(name, value); } }; this.GMsetValue = function(name, value){ if (typeof GM_setValue === "function") { return GM_setValue(name, value); } else { return GM.setValue(name, value); } }; this.GMaddStyle = function(css){ var myStyle = document.createElement('style'); myStyle.textContent = css; var doc = document.head || document.documentElement; doc.appendChild(myStyle); }; this.GMopenInTab = function(url, open_in_background){ if (typeof GM_openInTab === "function") { GM_openInTab(url, open_in_background); } else { GM.openInTab(url, open_in_background); } }; this.addScript = function(url){ var s = document.createElement('script'); s.setAttribute('src',url); document.body.appendChild(s); }; this.randomNumber = function(){ return Math.ceil(Math.random()*100000000); }; this.request = function(mothed, url, param){ return new Promise(function(resolve, reject){ GM_xmlhttpRequest({ url: url, method: mothed, data:param, onload: function(response) { var status = response.status; var playurl = ""; if(status==200||status=='200'){ var responseText = response.responseText; resolve({"result":"success", "data":responseText}); }else{ reject({"result":"error", "data":null}); } } }); }) }; this.getBilibiliBV=function(){ var pathname = window.location.pathname; var bv = pathname.replace("/video/","").replace("/",""); return bv; } } //全局统一变量 const toolObject = new ToolObject(); const window_url = window.location.href; const window_host = window.location.host; const coolhiiVIPVideo={}; coolhiiVIPVideo.eleId = Math.ceil(Math.random()*100000000); coolhiiVIPVideo.analysisWebsite="https://www.xixicai.top/mov/s/?sv=1&url="; coolhiiVIPVideo.defaultSourceArray=[ {"name":"纯净/B站","category":"1","url":"https://z1.m1907.cn/?jx="}, {"name":"高速接口","category":"1","url":"https://jsap.attakids.com/?url="}, {"name":"综合/B站1","category":"1","url":"https://vip.parwix.com:4433/player/?url="}, {"name":"OK解析","category":"1","url":"https://okjx.cc/?url="}, {"name":"乐多资源","category":"1","url":"https://api.leduotv.com/wp-api/ifr.php?isDp=1&vid="}, {"name":"虾米","category":"1","url":"https://jx.xmflv.com/?url="}, {"name":"全民","category":"1","url":"https://jx.quanmingjiexi.com/?url="}, {"name":"七哥","category":"1","url":"https://jx.mmkv.cn/tv.php?url="}, {"name":"冰豆","category":"1","url":"https://api.qianqi.net/vip/?url="}, {"name":"诺诺","category":"1","url":"https://www.ckmov.com/?url="}, {"name":"迪奥","category":"1","url":"https://123.1dior.cn/?url="}, {"name":"CK","category":"1","url":"https://www.ckplayer.vip/jiexi/?url="}, {"name":"LE","category":"1","url":"https://lecurl.cn/?url="}, {"name":"ckmov","category":"1","url":"https://www.ckmov.vip/api.php?url="}, {"name":"ccyjjd","category":"1","url":"https://ckmov.ccyjjd.com/ckmov/?url="}, {"name":"RDHK","category":"1","url":"https://jx.rdhk.net/?v="}, {"name":"爱豆","category":"1","url":"https://jx.aidouer.net/?url="}, {"name":"H8","category":"1","url":"https://www.h8jx.com/jiexi.php?url="}, {"name":"BL","category":"1","url":"https://vip.bljiex.com/?v="}, {"name":"解析la","category":"1","url":"https://api.jiexi.la/?url="}, {"name":"MUTV","category":"1","url":"https://jiexi.janan.net/jiexi/?url="}, {"name":"MAO","category":"1","url":"https://www.mtosz.com/m3u8.php?url="}, {"name":"老板","category":"1","url":"https://vip.laobandq.com/jiexi.php?url="}, {"name":"盘古","category":"1","url":"https://www.pangujiexi.cc/jiexi.php?url="}, {"name":"盖世","category":"1","url":"https://www.gai4.com/?url="}, {"name":"小蒋","category":"1","url":"https://www.kpezp.cn/jlexi.php?url="}, {"name":"YiTV","category":"1","url":"https://jiexi.us/?url="}, {"name":"星空","category":"1","url":"http://60jx.com/?url="}, {"name":"0523","category":"1","url":"https://go.yh0523.cn/y.cy?url="}, {"name":"17K云","category":"1","url":"https://17kyun.com/api.php?url="}, {"name":"4K","category":"1","url":"https://jx.4kdv.com/?url="}, {"name":"云析","category":"1","url":"https://jx.yparse.com/index.php?url="}, {"name":"8090","category":"1","url":"https://www.8090g.cn/?url="}, {"name":"江湖","category":"1","url":"https://api.jhdyw.vip/?url="}, {"name":"诺讯","category":"1","url":"https://www.nxflv.com/?url="}, {"name":"PM","category":"1","url":"https://www.playm3u8.cn/jiexi.php?url="}, {"name":"奇米","category":"1","url":"https://qimihe.com/?url="}, {"name":"思云","category":"1","url":"https://jx.ap2p.cn/?url="}, {"name":"听乐","category":"1","url":"https://jx.dj6u.com/?url="}, {"name":"aijx","category":"1","url":"https://jiexi.t7g.cn/?url="}, {"name":"夜幕","category":"1","url":"https://www.yemu.xyz/?url="}, {"name":"52","category":"1","url":"https://vip.52jiexi.top/?url="}, {"name":"黑米","category":"1","url":"https://www.myxin.top/jx/api/?url="}, {"name":"豪华啦","category":"1","url":"https://api.lhh.la/vip/?url="}, {"name":"凉城","category":"1","url":"https://jx.mw0.cc/?url="}, {"name":"33t","category":"1","url":"https://www.33tn.cn/?url="}, {"name":"180","category":"1","url":"https://jx.000180.top/jx/?url="}, {"name":"无名","category":"1","url":"https://www.administratorw.com/video.php?url="}, {"name":"黑云","category":"1","url":"https://jiexi.380k.com/?url="}, {"name":"九八","category":"1","url":"https://jx.youyitv.com/?url="}, ]; coolhiiVIPVideo.iframePlayerNodes = [ { url:"v.qq.com", node:"#mod_player"}, { url:"www.iqiyi.com", node:"#flashbox"}, { url:"v.youku.com", node:"#player"}, { url:"w.mgtv.com", node:"#mgtv-player-wrap"}, { url:"www.mgtv.com", node:"#mgtv-player-wrap"}, { url:"tv.sohu.com", node:"#player"}, { url:"film.sohu.com", node:"#playerWrap"}, { url:"www.le.com", node:"#le_playbox"}, { url:"video.tudou.com", node:".td-playbox"}, { url:"v.pptv.com", node:"#pptv_playpage_box"}, { url:"vip.pptv.com", node:".w-video"}, { url:"www.wasu.cn", node:"#flashContent"}, { url:"www.acfun.cn", node:"#ACPlayer"}, { url:"vip.1905.com", node:"#player"}, {url:"play.tudou.com",node:"#player"}, {url:"www.bilibili.com/video",node:"#bilibiliPlayer"}, {url:"www.bilibili.com/bangumi",node:"#player_module"}, ]; coolhiiVIPVideo.judgeVipWebsite=function(){ var urls = ["www.iqiyi.com","v.qq.com","youku.com", "www.le.com","mgtv.com","sohu.com", "acfun.cn","bilibili.com","baofeng.com","pptv.com"]; var result = false; for(var i=0; iimg{width:100%; display: inline-block; vertical-align: middle;}"; innnerCss += "#plugin_coolhii_analysis_vip_"+this.eleId+" .setting_analysis_666666{height:25px;line-height:25px;margin-top:5px;background-color:"+themeColor+";border-radius:4px;}"; innnerCss += "#plugin_coolhii_analysis_vip_"+this.eleId+" .setting_analysis_666666 >img{width:80%; display: inline-block; vertical-align: middle;}"; innnerCss += "#plugin_coolhii_analysis_vip_"+this.eleId+" .select_interface_box_outer{display:none;position:absolute;top:-60px;left:25px;padding:5px;}"; innnerCss += "#plugin_coolhii_analysis_vip_"+this.eleId+" .select_interface_box{width:300px;height:350px;background-color:rgba(241,241,241,0.8);overflow-y:auto;border-radius:4px;}"; innnerCss += "#plugin_coolhii_analysis_vip_"+this.eleId+" .select_interface_box::-webkit-scrollbar{width:5px; height:1px;}"; innnerCss += "#plugin_coolhii_analysis_vip_"+this.eleId+" .select_interface_box::-webkit-scrollbar-thumb{border-radius: 4px;box-shadow:inset 0 0 5px rgba(0, 0, 0, 0.2); background:#A8A8A8;}"; innnerCss += "#plugin_coolhii_analysis_vip_"+this.eleId+" .select_interface_box::-webkit-scrollbar-track{border-radius: 4px;box-shadow:inset 0 0 5px rgba(0, 0, 0, 0.2); background:#F1F1F1;}"; innnerCss += "#plugin_coolhii_analysis_vip_"+this.eleId+" .select_interface_box >span{border-radius:3px;border-top:3px solid "+themeColor+"; border-bottom:3px solid "+themeColor+";display:inline-block;width:calc(25% - 6px);width:-moz-calc(25% - 6px);width: -webkit-calc(25% - 6px);height:20px;line-height:20px;background-color:"+themeColor+";color:#FFF;cursor:pointer;margin:3px;text-align:center;overflow:hidden;white-space: nowrap;text-overflow: ellipsis;-o-text-overflow:ellipsis;font-size:12px!important;}"; innnerCss += "#plugin_coolhii_analysis_vip_"+this.eleId+" .select_interface_box >span:hover{border-top:3px solid #FFF; border-bottom:3px solid #FFF;}"; innnerCss += "#plugin_coolhii_analysis_vip_"+this.eleId+" .select_interface_box >span.hover-mark{border-top:3px solid #FFF; border-bottom:3px solid #FFF;}"; $("body").prepend(""); }; coolhiiVIPVideo.generateHtml=function(){ var interfaceHtml = ""; for(var i=0; i"+obj.name+""; } var vipBase64Image = "data:image/png;base64,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"; var html= `
`+interfaceHtml+`
;
`; $("body").append(html); }; coolhiiVIPVideo.operation=function(){ $("body").on("click", "#plugin_coolhii_analysis_vip_"+coolhiiVIPVideo.eleId+" .jump_analysis_666666", function(){ var jumpWebsite = coolhiiVIPVideo.analysisWebsite + window_url; GM_openInTab(jumpWebsite, {active:true}); }); $("body").on("click", "#plugin_coolhii_analysis_vip_"+coolhiiVIPVideo.eleId+" .setting_analysis_666666", function(){ alert("1"); }); $("body").on("click", "#plugin_coolhii_analysis_vip_"+coolhiiVIPVideo.eleId+" .select_interface_box>span", function(){ var node = ""; var iframePlayerNodes = coolhiiVIPVideo.iframePlayerNodes; for(var m in iframePlayerNodes) { var playUrl = window.location.href; if(playUrl.indexOf(iframePlayerNodes[m].url)!= -1){ node = iframePlayerNodes[m].node; } } //标记点击过的接口 $("#plugin_coolhii_analysis_vip_"+coolhiiVIPVideo.eleId+" .select_interface_box>span").removeClass("hover-mark"); $(this).addClass("hover-mark"); $("#play-iframe-outer-7788OP-99999900-99999900OOO").remove(); var playUrl = window.location.href; var playHtml = "
"; $(node).html(playHtml); var iframeSrc= $(this).attr("data-url")+playUrl; $("#play-iframe-6677i9999999666666").attr("src", iframeSrc); }); var $vipMovieBox = $("#plugin_coolhii_analysis_vip_"+coolhiiVIPVideo.eleId+" .vip_analysis_interface_box"); var $playSourceBox = $("#plugin_coolhii_analysis_vip_"+coolhiiVIPVideo.eleId+" .select_interface_box_outer"); $vipMovieBox.on("mouseover", () => { $playSourceBox.show(); }); $vipMovieBox.on("mouseout", () => { $playSourceBox.hide(); }); }; //借鉴脚本作者:lanhaha , 版权归原作者所有 //地址:https://greasyfork.org/zh-CN/scripts/370634 //修改:优化了该段代码的逻辑,使可读性更高 coolhiiVIPVideo.pageEventExtend = function(){ var window_url = window.location.href; if(window_url.indexOf('v.qq.com/x/cover') != -1){ $("body").on('mouseover', '.item a', function(e) { let $playerItem = $(this), href = $playerItem.attr('href') || $playerItem.data("href"); $playerItem.off('click.chrome'); $playerItem.on('click.chrome', function() { window.location.href = href }).attr('data-href', href).css({ cursor: 'pointer' }).removeAttr('href') }) }else if(window_url.indexOf('iqiyi.com/v_') != -1){ function remove(selector) { if (!document.querySelectorAll) { return; } var nodes = document.querySelectorAll(selector); if (nodes) { for (var i = 0; i < nodes.length; i++) { if (nodes[i] && nodes[i].parentNode) { nodes[i].parentNode.removeChild(nodes[i]); } } } }; function removeObj(targetSelector, rootSelector = 'body', wait) { const rootElement = document.querySelector(rootSelector); const targetElement = rootElement.querySelector(targetSelector); if (targetElement) { return Promise.resolve(targetElement) } return new Promise((resolve, reject) => { const callback = function(matationList, observer) { const targetElement = rootElement.querySelector(targetSelector); if (targetElement) { resolve(targetElement); observer.disconnect() } }; const observer = new MutationObserver(callback); observer.observe(rootElement, { subtree: true, childList: true }); if (wait !== undefined) { setTimeout(() => { observer.disconnect() }, wait) } }) }; async function removeAll(targetSelector, rootSelector, now = false) { if (now) { const parent = rootSelector ? document.querySelector(rootSelector) : document; if (parent) { const target = parent.querySelector(targetSelector); if (target) { target.remove(); return true } } return false } const target = await removeObj(targetSelector, rootSelector); target.remove() }; setTimeout(()=>{ remove('div#scrollTip,.qy-glide,#qy-glide,[class^="qy-glide"],[id^="qy-glide"],svg[display="none"][aria-hidden="true"],div[class*="player-side-ear"],div[class^="player-mnb"][data-asyn-pb]'); removeAll('div[style*="visibility"][style*="visible"]:not([class]):not([id]):not([style*="fixed"])', undefined, false); },1000); $('div[style*="visibility"][style*="visible"]:not([class]):not([id]):not([style*="fixed"])').hide(); $("body").on('mouseover', 'ul li [href*="/v_"][href*=".html"]:not([href*="=http"]):not([href*="?http"]):not([href*="#http"])', function(e) { let $playerItem = $(this), href = $playerItem.attr('href') || $playerItem.data("href"); $playerItem.off('click.chrome'); $playerItem.on('click.chrome', function() { window.location.href = href }).attr('data-href', href).css({ cursor: 'pointer' }).removeAttr('href') }); }else if(window_url.indexOf('bilibili.com/bangumi/') != -1){ $("body").on('mouseover', '.ep-item a', function(e) { let $playerItem = $(this), href = $playerItem.attr('href') || $playerItem.data("href"); $playerItem.off('click.chrome'); $playerItem.on('click.chrome', function() { window.location.href = href }).attr('data-href', href).css({ cursor: 'pointer' }).removeAttr('href'); }) } }; coolhiiVIPVideo.start=function(){ if(this.judgeVipWebsite() && window.top==window.self){ const self = this; setTimeout(function(){ self.addStyle(); self.generateHtml(); self.operation(); self.pageEventExtend(); },1500); } }; coolhiiVIPVideo.start(); /** * 音乐下载:无损音乐、封面、歌词 */ const coolhiiVIPMusic={}; coolhiiVIPMusic.eleId = Math.ceil(Math.random()*100000000); coolhiiVIPMusic.isRun = function(){ var musicurls=["music.163.com","y.qq.com","www.kugou.com","www.kuwo.cn","www.xiami.com","music.taihe.com","music.migu.cn","lizhi.fm","qingting.fm","ximalaya.com"]; for(var i=0; i.plugin_item{cursor:pointer; width:100%; padding:10px 0px; text-align:center;}"+ "#plugin_kiwi_analysis_vip_music_box_"+this.eleId+" >.plugin_item >img{width:20px; display:inline-block; vertical-align:middle;animation:turnaround 3s linear infinite;}"; $("body").prepend(""); }; coolhiiVIPMusic.generateHtml=function(){ var html=""; var vipImgBase64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAFM0lEQVRoQ+2Ye8jeYxjHP9+i8Afl0JzKOWeSORTFioYhMvuHHFasibaRFH/MxD/awdac5jCznOUUplFbyHnMhMiQOR82ioQ/vrqe7qd+7+/5He7nffe8WnbV09v7PNd139f3Ol+32MRJm7j+bAbwX3vw/+0B2ycCJwE7ps8OwIbC5xPgIUm/D8pTfXvA9qnAJGACsFOGYv8A9wDPSFqWwd8XSzYA28cAVwDnlW74BQjL59ASYI6kD3KYc3iyANi+DrixcOA3wFPAS8BZwIU5lyWeCKfZkmb1IVPL2grA9hPA2YUTrgbulvRrfGd7IvDYMJRZIGnaMOSGiDQCsB2xO7kgMV7S8uIJtrcC/hymIvdL6njP9u3A68ALkn7MPa8WgO1LgEWFg3aW9EPVwbY/BfbLvbTEN07SSttO338BzJc0P+e8SgC2z4iqUThgrKRVdQfang1clXNhBU8ZQJflZeCmssfL8nUAXkz1PfgnSWqMcdsnACs3MoDucXMl1RqnB4Dti4DFJWXmSbqyScFCCPSDY6akG1IOdEOoSn6hpCjhPVQF4E3g6AreSLDLJb1b/s32YcBdNXJV974CTJP0XvfHDAPMkHRLYwjZDsUDQBNNlXRHsloofi9wZB9mv0bSzRVGaPJAl32CpOeLskM8YDuaVTStNooQi8T9MDFGc4ox4aNUjQ4BAlyRIq+mSwqeHsrwQMjcJ+niJgCvAse1aZ9+D+UPBl4DJkr6rhAOY4DwUnTpoAiXBcVzbR8PnAysKJXRpuv/AMZIir8dKnsgrHNgJoBgiwa2u6T1ZRnb+wNhkJhUO2XYdkyupydgeySZujJap8alkiLfKgF8Hwj7APCApPPr+G1HrMfo8VZDgpcBRE5FH6qbdFdKGlcH4G9gyz4AzJJ0fQOA2BdWtJw3BIAk2d4HiLJ9WYXsx5IOqgMQA9p2fQDoSapSnAe4mf0CKORSlfwGSdvXAVgL7N0HgNWSjmjwwPsV1ajM3uOBkhHCAEUv/yUpBsjKHKhrYl3+34DbJF1rO4auPYGY6+8sVqFgtp1j/WBtA3A4sLoAaq2kfesAROmbUmHR52ItlPRkwb3nAo+m/79Nw98jwJlAlMijMj3ZCCAZI5pXrLJBjUl8GhDKBsXa9yCwVFJsYD1kuwgiU98ethwA04F5SXLISFE1CxXzoHaMth2lLDwQdX4klAOgaNi9JH1ZGULJXcX9d5GknpCyfUDaiaNZjZRyAMwA5gLLJY0vXljlgW2BNwodeYgXbG8TB/UxcrQBzAHQzc0LJC1tBJC8MDWqTWKMmSeWms4QZvvplKhtiuX+ngMgmuE7kqKrD6GmnXhO6oYh0AER+wAQ4DYmtZXRLaKYSIr7e6jtVWINcGjBEzF9joQiNOM96XPga2CdpPgbnu3sAzFKFC+IAVBSvD9VUs670LqYOEeidTyVAEskPZyU3S2duTWwXtKaOgBt97YCSBdGuYyaPxyKV7hO7NqOZ8nYbeOZskifAZ3uWvZA24VZANLlEftxeT/7wmJJk23HfLWw0E1r9RoYgAQiSmyAiB0gekETrZI01nZMt8+m8aLNoIPzQPlm28cCpySrRkMrj+FTJC2y/ThwTqvmiWGgHmhSwvYuQACJ58efJP2cvBYTbHguh5ZJirEhm7JzIPvEEmPma0NXqvUVsKzHaADIrWCdkOvXUAMHkMIoxvFda5T7Cri16rErB8yoAEggYkOL7SoW/QD0dnqtiDEh8mRYNGoAhqVdhtBmABlGGijLZg8M1LwZh/8L0s4qT+Ct+wMAAAAASUVORK5CYII="; html+= "
"; html+= "
"; html+= "
"; $("body").append(html); $("#plugin_kiwi_analysis_vip_music_box_"+this.eleId+"").on("click", function(){ var playUrl = coolhiiVIPMusic.getPlayUrl(); if(!!playUrl) GM_openInTab(playUrl, false); }) }; coolhiiVIPMusic.operation=function(){ setInterval(function(){ var playUrl = coolhiiVIPMusic.getPlayUrl(); var $vipMusicBox = $("#plugin_kiwi_analysis_vip_music_box_"+coolhiiVIPMusic.eleId+""); if(!!playUrl){ if($vipMusicBox.length==0){ coolhiiVIPMusic.generateHtml(); } }else{ $vipMusicBox.remove(); } }, 100); }; coolhiiVIPMusic.start=function(){ if(this.isRun()){ this.addStyle(); this.operation(); } }; coolhiiVIPMusic.start(); /** * 领券相关 */ var goodsCoupon={}; goodsCoupon.getPlatform=function(){ var couponUrl = window.location.href; var platform=""; if(couponUrl.indexOf("suning.com")!=-1){ platform = "suning"; }else if(couponUrl.indexOf("detail.tmall")!=-1){ platform = "tmall"; }else if(couponUrl.indexOf("item.taobao.com")!=-1){ platform = "taobao"; }else if(couponUrl.indexOf("item.jd.com")!=-1 || couponUrl.indexOf("item.yiyaojd.com")!=-1 || couponUrl.indexOf("npcitem.jd.hk")!=-1){ platform = "jd"; }else if(couponUrl.indexOf("detail.vip.com")!=-1){ platform = "vpinhui"; }else if(couponUrl.indexOf("mobile.yangkeduo.com")!=-1){ platform = "pdd"; } return platform; } goodsCoupon.filterStr = function(str){ if(!str) return ""; str = str.replace(/\t/g,""); str = str.replace(/\r/g,""); str = str.replace(/\n/g,""); str = str.replace(/\+/g,"%2B");//"+" str = str.replace(/\&/g,"%26");//"&" str = str.replace(/\#/g,"%23");//"#" return encodeURIComponent(str) }; goodsCoupon.getGoodsData=function(platform){ var goodsId = ""; var goodsName = ""; var websiteUrl = window.location.href; if(platform=="taobao"){ goodsId = this.getQueryString("id"); goodsName=$(".tb-main-title").text(); }else if(platform=="tmall"){ goodsId = this.getQueryString("id"); goodsName=$(".tb-detail-hd").text(); }else if(platform=="jd"){ goodsName=$("div.sku-name").text(); goodsId = this.getQueryStringByUrl(websiteUrl); }else if(platform=="suning"){ var text = $("#itemDisplayName").text(); if(!!text){ text = text.replace("苏宁超市",""); text = text.replace("自营",""); } goodsName=text; goodsId = this.getQueryStringByUrl(websiteUrl); }else if(platform=="vpinhui"){ goodsId = this.getQueryStringByUrl(websiteUrl).replace("detail-",""); goodsName = $(".pib-title-detail").text(); }else if(platform=="pdd"){ goodsId = this.getQueryString("goods_id"); goodsName = $(".enable-select").text(); } var data={"goodsId":goodsId, "goodsName":this.filterStr(goodsName)} return data; }; goodsCoupon.request = function(mothed, url, param){ return new Promise(function(resolve, reject){ GM_xmlhttpRequest({ url: url, method: mothed, data:param, onload: function(response) { var status = response.status; var playurl = ""; if(status==200||status=='200'){ var responseText = response.responseText; resolve({"result":"success", "json":responseText}); }else{ reject({"result":"error", "json":null}); } } }); }) }; goodsCoupon.createHtml = function(platform, goodsId, goodsName){ if(!platform || !goodsId) return; var goodsCouponUrl = "https://t.mimixiaoke.com/api/plugin/hit/v2?script=1&v=1.0.2&"; var goodsPrivateUrl = "https://t.mimixiaoke.com/api/private/change/coupon?script=2&v=1.0.2&platform="+platform+"&id="; if(platform==="jd"){ goodsCouponUrl = "http://t.jtm.pub/api/platform/jd/coupon?itemId="+goodsId+"&q="+goodsName+"&content=&no=1&v=1.0.2"; goodsPrivateUrl = "http://t.jtm.pub/api/private/change/coupon?no=1&v=1.0.2&platform="+platform+"&id="; }else{ if(platform!=="vpinhui"){ goodsCouponUrl = goodsCouponUrl+"platform="+platform+"&id="+goodsId+"&q="+goodsName; }else{ var vip = goodsId.split("-"); if(vip.length!=2) return; var vaddition = vip[0]; var vid = vip[1]; goodsCouponUrl = goodsCouponUrl+"platform="+platform+"&id="+vid+"&q="+goodsName+"&addition="+vaddition; } } this.request("GET", goodsCouponUrl, null).then((resutData)=>{ if(resutData.result==="success" && !!resutData.json){ var data = JSON.parse(resutData.json).data; if(!data || data==="null" || !data.css || !data.html || !data.handler){ return; } var cssText = data.css; var htmlText = data.html; var handler = data.handler; var templateId = data.templateId; $("body").prepend(""); var handlers = handler.split("@"); for(var i=0; i{ event.stopPropagation(); event.preventDefault(); let couponId = $llkk.data("id"); if(!!couponId){ this.request("GET", goodsPrivateUrl+couponId, null).then((resutData2)=>{ if(resutData2.result==="success" && !!resutData2.json){ let url = JSON.parse(resutData2.json).url; if(!!url) GM_openInTab(url, {active:true}); } }); } }); setInterval(()=>{ $llkk.find("*").each(function(){ $(this).removeAttr("data-spm-anchor-id") }); },100); //canvas画二维码 var $canvasElement = $("#ca"+templateId); if($canvasElement.length != 0){ let couponId = $llkk.data("id"); this.request("GET", goodsPrivateUrl+couponId, null).then((resutData2)=>{ if(resutData2.result==="success" && !!resutData2.json){ let img = JSON.parse(resutData2.json).img; if(!!img){ var canvasElement = document.getElementById("ca"+templateId); var cxt = canvasElement.getContext("2d"); var imgData = new Image(); imgData.src = img; imgData.onload=function(){ cxt.drawImage(imgData, 0, 0, imgData.width, imgData.height); } } } }); } } } }); }; goodsCoupon.getQueryString = function(tag) { var t = new RegExp("(^|&)" + tag + "=([^&]*)(&|$)"); var a = window.location.search.substr(1).match(t); if (a != null) return a[2]; return ""; }; goodsCoupon.getQueryStringByUrl = function(url) { if(url.indexOf("?")!=-1){ url = url.split("?")[0] } if(url.indexOf("#")!=-1){ url = url.split("#")[0] } var splitText = url.split("/"); var idText = splitText[splitText.length-1]; idText = idText.replace(".html",""); return idText; }; goodsCoupon.randomSpmValue=function(){ $("meta[name='data-spm']").each(function(){ var max = 5000; var min = 1000; var randomValue = Math.floor(Math.random() * (max - min + 1) ) + min; var randomLetter = String.fromCharCode(Math.floor( Math.random() * 26) + "a".charCodeAt(0)); $(this).attr("content", randomValue+randomLetter); }); $("meta[name='spm-id']").each(function(){ var max = 5000; var min = 1000; var randomValue = Math.floor(Math.random() * (max - min + 1) ) + min; var randomLetter = String.fromCharCode(Math.floor( Math.random() * 26) + "a".charCodeAt(0)); $(this).attr("content", randomValue+randomLetter); }); }; goodsCoupon.runAliDeceptionSpm=function() { if(window.location.host.indexOf("aliyun.com")!=-1 || window.location.host.indexOf("taobao.com")!=-1 || window.location.host.indexOf("tmall.com")!=-1){ this.randomSpmValue(); setInterval(()=>{ this.randomSpmValue(); }, 4000); } }; goodsCoupon.start = function(){ var platform = this.getPlatform(); if(!platform) return; var delayMS = 0; if(platform=="vpinhui"){ //唯品会采用了异步加载 var vipInterval = setInterval(function(){ if($(".pib-title-detail").length!=0 || delayMS>=1200){ var goodsData = goodsCoupon.getGoodsData(platform); goodsCoupon.createHtml(platform, goodsData.goodsId, goodsData.goodsName); clearInterval(vipInterval) } delayMS+=100; },100); }else{ var goodsData = goodsCoupon.getGoodsData(platform); goodsCoupon.createHtml(platform, goodsData.goodsId, goodsData.goodsName); } }; goodsCoupon.start(); /** * 百度文库开始 */ const baiduwenkuHelper={}; baiduwenkuHelper.wenkudownloadUrl = "http://www.tool77.com/tampermonkey/doc/download?docs=11&wenku_url="; baiduwenkuHelper.isRun = function(){ if(window_host.indexOf("wenku.baidu.com") != -1){ return true; } return false; }; baiduwenkuHelper.removeAD=function(){ if(window_host.indexOf("wenku.baidu.com") != -1){ setInterval(function(){ $(".banner-ad").hide(); $(".union-ad-bottom").hide(); $("iframe").hide(); //VIP去广告小按钮 $(".ggbtm-vip-close").hide(); $(".ad-vip-close-bottom").hide(); $(".ad-vip-close").hide(); //搜索页面 $("#fengchaoad").hide(); $(".search-aside-adWrap").hide(); },300); } }; baiduwenkuHelper.generateHtml=function(){ const $that = this; if((window_url.indexOf("wenku.baidu.com/view")==-1 && window_url.indexOf("wenku.baidu.com/link")==-1) || window_host!="wenku.baidu.com"){ return; } var topBox = "
"+ "
下载
"+ "
"; $("body").append(topBox); $("body").on("click","#baiduwenku_helper_download_btn",function(){ //解析下载 var wenkuUrl = $that.wenkudownloadUrl+encodeURIComponent(window_url); GM_openInTab(wenkuUrl, { active: true }); }); }; baiduwenkuHelper.start=function(){ if(this.isRun()){ this.generateHtml(); this.removeAD(); } }; baiduwenkuHelper.start(); /** * 知乎助手开始 */ ////********************************************** //本脚本部分代码借鉴自【人鬼情未了】的脚本,已经获得原作者的完全授权,脚本代码可以随意修改使用,特此申明! ////【人鬼情未了】脚本名字:知乎网页助手 ////【人鬼情未了】脚本地址:https://greasyfork.org/zh-CN/scripts/384172 ////本脚本做出的修改:重构了部分逻辑 ////********************************************** const zhihuHelper={}; zhihuHelper.autoJumpTarget = function(){ //直接跳转到目标网页 var regexResult = location.search.match(/target=(.+?)(&|$)/); if(regexResult && regexResult.length==3){ location.href = decodeURIComponent(regexResult[1]); } }; zhihuHelper.clearAdvert = function(){ //去除广告,可能造成误伤,用最小策略 setInterval(function(){ var ad1 = document.querySelector('.AppBanner'); if (ad1!=="undefined" && ad1!==null) { ad1.style.display = "none"; } var ad2 = document.querySelector('.AdblockBanner'); if (ad2!=="undefined" && ad2!==null) { ad2.style.display = "none"; } }, 1000); }; zhihuHelper.changeHeightQualityPic = function(){ //图片自动高清 setInterval(function(){ $("body").find("img").each(function(){ var dataoriginal = $(this).attr("data-original"); if(!!dataoriginal){ $(this).attr("src", dataoriginal); } }); }, 500); }; zhihuHelper.noLoginBox = function(){ //去除登录提示 var IntervalUnit = 200; var totalIntervalMs = 0; var loginInterval = setInterval(function(){ $(".signFlowModal").children(".Modal-closeButton").click(); totalIntervalMs += IntervalUnit; if(totalIntervalMs >= 2000){ //循环多次,我就不信还显示 clearInterval(loginInterval); } }, IntervalUnit); $(".AppHeader-login").click(function(){ clearInterval(loginInterval); $(".Modal-wrapper").show(); }); }; zhihuHelper.markQuestionDate = function(){ //标注回答时间 /** * @param {Object} time * @param {Object} format * 时间格式化 * DateFormat(new Date(dateCreated), "yyyy-MM-dd hh:mm:ss") */ function DateFormat(time, format) { // var o = { "M+": time.getMonth() + 1, //月份 "d+": time.getDate(), //日 "h+": time.getHours(), //小时 "m+": time.getMinutes(), //分 "s+": time.getSeconds(), //秒 "q+": Math.floor((time.getMonth() + 3) / 3), //季度 "S": time.getMilliseconds() //毫秒 }; if(/(y+)/.test(format)){ format = format.replace(RegExp.$1, (time.getFullYear() + "").substr(4 - RegExp.$1.length)); } for(var k in o){ if(new RegExp("(" + k + ")").test(format)){ format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); } } return format; } /** * 为问题添加创建时间和编辑时间 */ function addDateQuestion() { var title = document.querySelector(".QuestionPage"); if(!!title){ var dateCreated = title.querySelector("[itemprop~=dateCreated][content]").content; var dateModified = title.querySelector("[itemprop~=dateModified][content]").content; var createDate = DateFormat(new Date(dateCreated), "yyyy-MM-dd hh:mm:ss"); var editDate = DateFormat(new Date(dateModified), "yyyy-MM-dd hh:mm:ss"); var side = title.querySelector(".QuestionHeader-side"); var timeDiv = document.createElement('div'); timeDiv.innerHTML = `

创建于: ${createDate}

编辑于: ${editDate}

`; timeDiv.style.cssText = 'color:#6f6f6f;font-size:13px;'; side.appendChild(timeDiv); } } /** * 为回答添加创建时间和编辑时间 */ function addTimeAnswerItems() { var list = document.querySelectorAll(".AnswerItem"); for (var i = 0; i < list.length; i++) { var item = list[i]; if (item.getAttribute('zh_date_mk') === 'true') { continue; } item.setAttribute('zh_date_mk', 'true'); try{ var dateCreated = item.querySelector("[itemprop~=dateCreated][content]").content; var dateModified = item.querySelector("[itemprop~=dateModified][content]").content; var createDate = DateFormat(new Date(dateCreated), "yyyy-MM-dd hh:mm:ss"); var editDate = DateFormat(new Date(dateModified), "yyyy-MM-dd hh:mm:ss"); var sideItem = item.querySelector(".ContentItem-meta"); var timeDiv = document.createElement('div'); timeDiv.innerHTML = `创建于: ${createDate}   编辑于: ${editDate}`; timeDiv.class = "Voters"; timeDiv.style.cssText = 'color:#6f6f6f;font-size:13px;display:block;padding:5px 0px;'; sideItem.appendChild(timeDiv); }catch(e){} } } addDateQuestion(); setInterval(function(){ //循环检查回答和修改时间 addTimeAnswerItems(); },400); //document.querySelector(".Question-main").addEventListener('DOMNodeInserted', addTimeAnswerItems); }; zhihuHelper.autoExpandQuestionInfo = function(){ //问题全部展开 var mm0 = document.querySelector('.QuestionRichText-more'); if(mm0!=="undefined" && mm0!==null) { //展开问题描述 mm0.click(); } var mm1 = document.querySelector('.SignContainer-content'); if(mm1!=="undefined" && mm1!==null) { var c1 = document.querySelector('.Modal-backdrop'); if (c1!=="undefined" && c1!==null) { c1.click(); } var c2 = document.querySelector('.Modal-closeButton'); if (c2!=="undefined" && c2!==null) { c2.click(); } } }; zhihuHelper.start = function(){ //直接跳转到目标网页 if(window_host == "link.zhihu.com"){ this.autoJumpTarget(); } //知乎正文 if(window_host.indexOf("zhihu.com")!=-1){ if(window_url.indexOf("https://www.zhihu.com/question/") != -1){ this.autoExpandQuestionInfo(); //问题全部展开 this.markQuestionDate(); //问题日期 } this.noLoginBox(); //去除登录框 this.clearAdvert(); //去除广告 } }; zhihuHelper.start(); /** * B站视频下载 * @param {Object} toolObject */ ////********************************************** //本脚本部分代码借鉴自【爱画画的猫】的脚本,已经获得原作者的完全授权,脚本代码可以随意修改使用,特此申明! ////【爱画画的猫】脚本地址:https://greasyfork.org/zh-CN/scripts/418804 ////本脚本做出的修改:重构了部分逻辑 ////********************************************** function BilibiliVideoDownloadHelper(toolObject){ this.toolObject=toolObject; this.downloadResutError=function($btn){ alert("下载出错了"); $btn.text("下载视频(最高清)"); $btn.removeAttr("disabled"); }; this.downloadResutSuccess=function($btn){ $btn.text("下载视频(最高清)"); $btn.removeAttr("disabled"); }; this.downloadVideo=function($btn){ let bv = toolObject.getBilibiliBV(); if(!bv){ this.downloadResutError(); }else{ //bv转av toolObject.request("get", "http://api.bilibili.com/x/web-interface/archive/stat?bvid="+bv, null).then((resultData)=>{ let dataJson = JSON.parse(resultData.data); if(!!dataJson && dataJson.code===0 && !!dataJson.data){ let aid = dataJson.data.aid; if(!aid){ this.downloadResutError($btn); }else{ //获取cid toolObject.request("get", "https://api.bilibili.com/x/web-interface/view?aid="+aid, null).then((resultData2)=>{ let dataJson2 = JSON.parse(resultData2.data); if(!!dataJson2 && dataJson2.code===0 && !!dataJson2.data){ let aid = dataJson2.data.aid; let bvid = dataJson2.data.bvid; let cid = dataJson2.data.cid; if(!aid || !bvid || !cid){ this.downloadResutError($btn); }else{ //获取播放链接 toolObject.request("get", "https://api.bilibili.com/x/player/playurl?avid="+aid+"&cid="+cid+"&qn=112", null).then((resultData3)=>{ let dataJson3 = JSON.parse(resultData3.data); if(!!dataJson3 && dataJson3.code===0 && !!dataJson3.data){ this.downloadResutSuccess($btn); window.open(dataJson3.data.durl[0].url); } }).catch((errorData)=>{ this.downloadResutError($btn); }); } } }).catch((errorData)=>{ this.downloadResutError($btn); }); } } }).catch((errorData)=>{ this.downloadResutError(); }); } } this.createElementHtml = function(){ let randomNumber = this.toolObject.randomNumber(); let cssText = ` #bilibili_exti_`+randomNumber+`{padding:10px;} #bilibili_exti_`+randomNumber+` >.self_s_btn{background-color:#FB7299; color:#FFF; font-size:10px;display:inline-block; margin-right:15px;padding:2px 4px;border-radius:3px;cursor:pointer;} `; let htmlText= `
下载视频(最高清) 一键三连
`; setTimeout(()=>{ if($("#bilibili-player").html().length >= 10){ $("body").prepend(""); $("#viewbox_report div.video-data").append(htmlText); let $that = this; $("#download_s_"+randomNumber).on("click", function(){ $(this).attr("disabled", "disabled"); $(this).text("下载视频(准备中)") $that.downloadVideo($(this)); }); $("#focus_s_"+randomNumber).on("click", function(){ $("#arc_toolbar_report .like").click(); $("#arc_toolbar_report .coin").click(); }); } }, 2500); } this.start = function(){ if(window.location.pathname.indexOf("/video")!=-1 && window.location.host==="www.bilibili.com"){ this.createElementHtml(); } } } /** * 记录b站的观看记录 * @param {Object} toolObject */ ////********************************************** //本脚本部分代码借鉴自【爱画画的猫】的脚本,已经获得原作者的完全授权,脚本代码可以随意修改使用,特此申明! ////【爱画画的猫】脚本地址:https://greasyfork.org/zh-CN/scripts/418804 ////本脚本做出的修改:重构了部分逻辑 ////********************************************** function RecordViewFunction(toolObject){ this.toolObject=toolObject; this.localCacheName = "bilibili_video_record"; this.recordOneVideo = function(){ let promise = new Promise((resolve, reject)=>{ let bv = toolObject.getBilibiliBV(); let cacheText = toolObject.GMgetValue(this.localCacheName); cacheText = !cacheText ? "" : cacheText+"#"; let viewArray = cacheText.split("#"); let len = viewArray.length; let limitNum = 2000; //最多保存2000个视频记录 if(len>=limitNum){ //超过则清除最开始的1/4 let newCacheText = ""; let limitNumHalf = limitNum/4; for(var i=0; i=limitNumHalf){ newCacheText += "#" + viewArray[i]; } } cacheText = newCacheText; } if(cacheText.indexOf(bv)==-1){ cacheText += bv; toolObject.GMsetValue(this.localCacheName, cacheText); } resolve({"result":"success"}); }); }; this.searchPageRemindHtml = function($ele, top=8, right=8){ $ele.css("position","relative"); $ele.append("
已看
"); }; this.searchPageRemind = function(){ let $that = this; setInterval(function(){ let cacheText = toolObject.GMgetValue($that.localCacheName); cacheText = !cacheText ? "" : cacheText; $(".video-list .video-item").each(function(){ //搜索结果 if($(this).attr("dealxll")!=="true"){ var videourl = $(this).children("a").attr("href"); if(cacheText.indexOf(videourl.split("?")[0].replace("//www.bilibili.com/video/",""))!=-1){ $that.searchPageRemindHtml($(this)); } $(this).unbind("click").bind("click", ()=>{ //循环操作,单独绑定 $that.searchPageRemindHtml($(this)); }) $(this).attr("dealxll","true"); } }); $("#page-index .small-item").each(function(){ //用户主页 if($(this).attr("dealxll")!=="true"){ var videourl = $(this).children("a").attr("href"); if(cacheText.indexOf(videourl.split("?")[0].replace("//www.bilibili.com/video/",""))!=-1){ $that.searchPageRemindHtml($(this), 12, 12); } $(this).unbind("click").bind("click", ()=>{ //循环操作,单独绑定 $that.searchPageRemindHtml($(this), 12, 12); }) $(this).attr("dealxll","true"); } }); $("#submit-video-list .small-item").each(function(){ //用户投稿 if($(this).attr("dealxll")!=="true"){ var videourl = $(this).children("a").attr("href"); if(cacheText.indexOf(videourl.split("?")[0].replace("//www.bilibili.com/video/",""))!=-1){ $that.searchPageRemindHtml($(this), 12, 12); } $(this).unbind("click").bind("click", ()=>{ //循环操作,单独绑定 $that.searchPageRemindHtml($(this), 12, 12); }) $(this).attr("dealxll","true"); } }); }, 100); } this.start=function(){ let $that = this; if(window.location.pathname.indexOf("/video")!=-1 && window.location.host==="www.bilibili.com"){ let currentHref = ""; setInterval(()=>{ //需要循环存储 if(window.location.href!==currentHref){ this.recordOneVideo(); currentHref = window.location.href; } },100); } //搜索结果和用户主页已经看过的视频提醒 if(window.location.host==="search.bilibili.com" || window.location.host==="space.bilibili.com"){ this.searchPageRemind(); GM_registerMenuCommand("清空脚本保存的浏览记录",function(){ if(confirm('是否要清空脚本保存的浏览记录?清空后将不可恢复...')){ $that.toolObject.GMsetValue($that.localCacheName, ""); } }); } }; } try{ (new BilibiliVideoDownloadHelper(toolObject)).start(); (new RecordViewFunction(toolObject)).start(); }catch(e){} })(); /** * 作者备注: * 王超先生的知乎视频下载脚本代码非常精炼,我认为此功能不需要再二次编写了 * 此部分代码已获得原作者授权同意,并符合MIT协议,请知悉! * 下载知乎视频,作者:王超, 脚本链接:https://greasyfork.org/zh-CN/scripts/39206 * 版本:1.30 * 版权归原作者所有 */ (async () => { if (window.location.host == 'www.zhihu.com') return; console.log('知乎视频下载:'); const playlistBaseUrl = 'https://lens.zhihu.com/api/v4/videos/'; // const videoBaseUrl = 'https://video.zhihu.com/video/'; const videoId = window.location.pathname.split('/').pop(); // 视频id const menuStyle = 'transform:none !important; left:auto !important; right:-0.5em !important;'; const playerId = 'player'; const coverSelector = '#' + playerId + ' > div:first-child > div:first-child > div:nth-of-type(2)'; const controlBarSelector = '#' + playerId + ' > div:first-child > div:first-child > div:last-child > div:last-child > div:first-child'; const svgDownload = ''; const player = document.getElementById(playerId); // const resolutions = {'普清': 'ld', '标清': 'sd', '高清': 'hd', '超清': 'fhd'}; const resolutions = [ {ename: 'ld', cname: '普清'}, {ename: 'sd', cname: '标清'}, {ename: 'hd', cname: '高清'}, {ename: 'fhd', cname: '超清'} ]; let videos = []; // 存储各分辨率的视频信息 function fetchRetry (url, options = {}, times = 1, delay = 1000, checkStatus = true) { return new Promise((resolve, reject) => { // fetch 成功处理函数 function success (res) { if (checkStatus && !res.ok) { failure(res); } else { resolve(res); } } // 单次失败处理函数 function failure (error) { if (--times) { setTimeout(fetchUrl, delay); } else { reject(error); } } // 总体失败处理函数 function finalHandler (error) { throw error; } function fetchUrl () { return fetch(url, options) .then(success) .catch(failure) .catch(finalHandler); } fetchUrl(); }); } // 下载指定url的资源 async function downloadUrl (url, name = (new Date()).valueOf() + '.mp4') { // Greasemonkey 需要把 url 转为 blobUrl if (GM_info.scriptHandler === 'Greasemonkey') { const res = await fetchRetry(url); const blob = await res.blob(); url = URL.createObjectURL(blob); } // Chrome 可以使用 Tampermonkey 的 GM_download 函数绕过 CSP(Content Security Policy) 的限制 if (window.GM_download) { GM_download({url, name}); } else { // firefox 需要禁用 CSP, about:config -> security.csp.enable => false let a = document.createElement('a'); a.href = url; a.download = name; a.style.display = 'none'; // a.target = '_blank'; document.body.appendChild(a); a.click(); document.body.removeChild(a); setTimeout(() => URL.revokeObjectURL(url), 100); } } // 格式化文件大小 function humanSize (size) { let n = Math.log(size) / Math.log(1024) | 0; return (size / Math.pow(1024, n)).toFixed(0) + ' ' + (n ? 'KMGTPEZY'[--n] + 'B' : 'Bytes'); } if (!player) return; // 获取视频信息 const res = await fetchRetry(playlistBaseUrl + videoId, { headers: { 'referer': 'refererBaseUrl + videoId', 'authorization': 'oauth c3cef7c66a1843f8b3a9e6a1e3160e20' // in zplayer.min.js of zhihu } }, 3); const videoInfo = await res.json(); // 获取不同分辨率视频的信息 for (const [key, video] of Object.entries(videoInfo.playlist)) { video.name = key.toLowerCase(); video.cname = resolutions.find(v => v.ename === video.name)?.cname if (!videos.find(v => v.size === video.size)) { videos.push(video); } } // 按格式大小排序 videos = videos.sort(function (v1, v2) { const v1Index = resolutions.findIndex(v => v.ename === v1.name); const v2Index = resolutions.findIndex(v => v.ename === v2.name); return v1Index === v2Index ? 0 : (v1Index > v2Index ? 1 : -1); // return v1.size === v2.size ? 0 : (v1.size > v2.size ? 1 : -1); }).reverse(); document.addEventListener('DOMNodeInserted', (evt) => { const domControlBar = evt.relatedNode.querySelector(':scope > div:last-child > div:first-child > div:nth-of-type(2)'); if (!domControlBar || domControlBar.querySelector('.download')) return; const domButtonsBar = domControlBar.querySelector(':scope > div:last-child'); const domFullScreenBtn = domButtonsBar.querySelector(':scope > div:nth-last-of-type(2)'); const domResolutionBtn = Array.from(domButtonsBar.querySelectorAll(':scope > div')).filter(el => el.innerText.substr(1, 1) === '清')[0]; let domDownloadBtn, defaultResolution, buttons; if (!domFullScreenBtn || !domFullScreenBtn.querySelector('button')) return; // 克隆分辨率菜单或全屏按钮为下载按钮 domDownloadBtn = (domResolutionBtn && (domResolutionBtn.className === domFullScreenBtn.className)) ? domResolutionBtn.cloneNode(true) : domFullScreenBtn.cloneNode(true); defaultResolution = domDownloadBtn.querySelector('button').innerText; // 生成下载按钮图标 domDownloadBtn.querySelector('button:first-child').outerHTML = domFullScreenBtn.cloneNode(true).querySelector('button').outerHTML; domDownloadBtn.querySelector('svg').innerHTML = svgDownload; domDownloadBtn.className = domDownloadBtn.className + ' download'; buttons = domDownloadBtn.querySelectorAll('button'); // button 元素添加对应的下载地址属性 buttons.forEach(dom => { const video = videos.find(v => v.cname === dom.innerText) || videos[videos.length - 1]; dom.dataset.video = video.play_url; if (dom.innerText) { (dom.innerText = `${dom.innerText} (${humanSize(video.size)})`); } else if (buttons.length == 1) { dom.nextSibling.querySelector('div').innerText = humanSize(video.size); } }); // 鼠标事件 - 显示菜单 domDownloadBtn.addEventListener('pointerenter', () => { const domMenu = domDownloadBtn.querySelector('div:nth-of-type(1)'); if (domMenu) { domMenu.style.cssText = menuStyle + 'opacity:1 !important; visibility:visible !important'; } }); // 鼠标事件 - 隐藏菜单 domDownloadBtn.addEventListener('pointerleave', () => { const domMenu = domDownloadBtn.querySelector('div:nth-of-type(1)'); if (domMenu) { domMenu.style.cssText = menuStyle; } }); // 鼠标事件 - 选择菜单项 domDownloadBtn.addEventListener('pointerup', event => { let e = event.srcElement || event.target; while (e.tagName !== 'BUTTON') { e = e.parentNode; } downloadUrl(e.dataset.video); }); // 显示下载按钮 domButtonsBar.appendChild(domDownloadBtn); }); })();