您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
改编自脚本 JAV老司机
当前为
// ==UserScript== // @name JAVBUS封面大图 // @namespace http://tampermonkey.net/ // @version 20210309 // @description 改编自脚本 JAV老司机 // @author kygo233 // @include /^https:\/\/.*\.(javbus|busfan|fanbus|buscdn|cdnbus|dmmsee|seedmm|busdmm|busjav)\..*$/ // @include https://*avmoo.* // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/lazyload.min.js // @grant GM_addStyle // @grant GM_xmlhttpRequest // @grant GM_getValue // @grant GM_setValue // @grant GM_download // @grant GM_setClipboard // @connect * // 2021-03-09 恢复高清字幕图标的显示 // 2021-02-06 新增图片懒加载插件;重调样式;优化按钮效果,切换样式不刷新页面;磁力界面新增演员表样品图显示; // 2021-01-18 适配AVMOO网站;无码页面屏蔽竖图模式;调整域名匹配规则 // 2021-01-01 新增宽度调整功能; // 2020-12-29 解决半图模式下 竖图显示不全的问题; // 2020-10-16 解决功能开关取默认值为undefined的bug // 2020-10-16 解决和"JAV老司机"同时运行时样式冲突问题,需关闭老司机的瀑布流 // 2020-10-14 收藏界面只匹配影片;下载图片文件名添加标题;新增复制番号、标题功能;视频截图文件下载;封面显示半图;增加样式开关 // 2020-09-20 收藏界面的适配 // 2020-08-27 适配更多界面 // 2020-08-26 修复查询结果为1个时,item宽度为100%的问题 // 2020-08-26 添加瀑布流 // 2020-08-24 第一版:封面大图、下载封面、查看视频截图 // ==/UserScript== // 懒加载 done // promise加载内容 done // 网络错误 boostrap提示框 done // avmoo 隐藏磁力按钮 done // 无缝瀑布流 // 国际化 // 标题单行显示 (function () { 'use strict'; // 瀑布流状态:1:开启、0:关闭 let waterfallScrollStatus = GM_getValue('waterfall_status', 0); let copyBtnStatus = GM_getValue('copyBtn_status', 1); let itemTagStatus = GM_getValue('itemTag_status', 1); let aTagStatus = GM_getValue('aTag_status', 1); let halfImgStatus = GM_getValue('halfImg_status', 0); let avInfoStatus = GM_getValue('avInfo_status', 1); let waterfallWidth = GM_getValue('waterfallWidth', 100); let statusDefaultMap = new Map(); // 空Map statusDefaultMap.set('waterfall', 0); // statusDefaultMap.set('copyBtn', 1); // statusDefaultMap.set('itemTag', 1); // statusDefaultMap.set('aTag', 1); statusDefaultMap.set('halfImg', 0); statusDefaultMap.set('avInfo', 1); let columnNum_full = GM_getValue('bigImg_columnNum_full', 3); let columnNum_half = GM_getValue('bigImg_columnNum_half', 4); const IMG_SUFFIX = "-bigimg-tag"; const MAGNET_SUFFIX = "-magnet-tag"; const SAMPLE_SUFFIX = "-sample-tag"; const AVATAR_SUFFIX = "-avatar-tag"; const AVINFO_SUFFIX = "-avTnfo-tag"; const blogjavSelector= "#content .title2>h1>a"; let GetData = { //判断是否为竖图模式 isHalfImg :function(){ return GM_getValue('halfImg_status', 0) > 0 && !halfImg_block; }, //获取列数 getColumnNum :function(){ return this.isHalfImg() ? GM_getValue('bigImg_columnNum_half', 4) : GM_getValue('bigImg_columnNum_full', 3); } } //加载图片懒加载插件 let lazyLoad = new LazyLoad({ callback_loaded: function(bigimg){ //加载时的回调,本身为竖图的不做变化 if ( GetData.isHalfImg() && bigimg.height > bigimg.width) { $(bigimg).removeClass("halfImgCSS"); $(bigimg).addClass("fullImgCSS"); } } }); //导航栏的功能 绑定事件 let func_List={ select_tag : { change:function(columnNum){ GM_setValue('bigImg_columnNum_' + (GetData.isHalfImg()? 'half' : 'full'),columnNum ); GM_addStyle('#waterfall_h1 .item{ width: ' + 100 / columnNum + '%;}'); } }, waterfall : { checkbox : function (){ window.location.reload(); } } , copyBtn:{ checkbox : function (){ $(".copyBtn-icon").toggleClass("hidden"); } }, itemTag:{ checkbox : function (){ $(".item-tag").toggleClass("hidden"); } }, aTag:{ checkbox : function (){ $(".func-div").toggleClass("hidden"); } }, halfImg :{ checkbox : function (){ var removeClassName="halfImgCSS"; var addClassName="fullImgCSS"; if (GetData.isHalfImg()) { removeClassName="fullImgCSS"; addClassName="halfImgCSS"; } $("#waterfall_h1 .movie-box-b img").each(function(){ //高大于宽的图片 不变化 if (! (this.height > this.width)) { $(this).removeClass(removeClassName).addClass(addClassName); } }); var columnNum = GetData.getColumnNum(); GM_addStyle('#waterfall_h1 .item{ width: ' + 100 / columnNum + '%;}'); $("#inputGroupSelect01").val(columnNum); } }, avInfo:{ checkbox : function (){ $("#modal-div .avInfo").toggleClass("hidden"); } }, }; //显示提示框 function showAlert(msg){ var $alet = $("#alert-error"); if(!$alet.length){ var alert=`<div id="alert-error" class="alert alert-danger" style="width:400px;position: fixed;top: 100px;left: 50%;margin-left:-200px;display:none;font-size: 20px;" role="alert"></div>`; $alet=$(alert); $('body').append($alet); } $alet.text(msg); $alet.fadeIn().delay(2000).fadeOut(); } //添加全局样式 导航栏功能按钮 function addStyle() { GM_addStyle(css_waterfall); var columnNum = GetData.getColumnNum(); GM_addStyle('#waterfall_h1 { width: ' + waterfallWidth + '% !important;}'); GM_addStyle('#waterfall_h1 .item{ width: ' + 100 / columnNum + '%;}'); //添加bootstrap弹出框,用于显示磁力表格和视频截图, var myModal=$('<div class="modal fade" id="myModal" role="dialog" ><div class="modal-dialog" style="width:80% !important;" id="modal-div" > </div></div>'); $('body').append(myModal); myModal.on('show.bs.modal', function(){ var $modal_dialog = $(this).find('.modal-dialog'); $(this).css('display', 'block'); $modal_dialog.css({'margin-top': Math.max(0, ($(window).height() - $modal_dialog.height()) / 2) }); }); //启用图片浏览插件 myModal.magnificPopup({ delegate: '.sample-a-zdy', type: 'image', closeOnContentClick: false, closeBtnInside: false, mainClass: 'mfp-with-zoom mfp-img-mobile', image: { verticalFit: true }, gallery: { enabled: true }, zoom: { enabled: true, duration: 300, opener: function(element) { return element.find('img'); } } }); //列数下拉框, var select_tag = $('<select class="form-control" style="margin-top: 8px;padding:0;" id="inputGroupSelect01">' + ' <option value="1">1列</option><option value="2">2列</option><option value="3">3列</option>' + ' <option value="4">4列</option><option value="5">5列</option><option value="6">6列</option></select>'); $(select_tag).val(columnNum); $(select_tag).change(function(){ func_List.select_tag.change($(this).val()); }); let li_elem = document.createElement('li'); $(li_elem).append($(select_tag)); $("#navbar ul.nav").first().append($(li_elem)); var other_select_tag = $('<li class="dropdown">' + ' <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-hover="dropdown" >样式开关<span class="caret"></span></a>' + ' <ul class="dropdown-menu" role="menu">' + '</ul> </li>'); $(other_select_tag).mouseover(function () { $(this).addClass('open'); }).mouseout(function () { $(this).removeClass('open'); }); var ul = $(other_select_tag).children("ul")[0]; //阻止事件冒泡 实现点击后不关闭下拉菜单 $(ul).on("click", "[data-stopPropagation]", function (e) { e.stopPropagation(); }); $(ul).append(creatCheckbox("waterfall", "瀑布流")); $(ul).append(creatCheckbox("copyBtn", "复制图标")); $(ul).append(creatCheckbox("itemTag", "高清&字幕图标")); $(ul).append(creatCheckbox("aTag", "功能链接")); if (!halfImg_block) { $(ul).append(creatCheckbox("halfImg", "竖图模式")); } //avmoo 屏蔽此按钮 if(currentWeb!='avmoo') { $(ul).append(creatCheckbox("avInfo", "演员表&样品图")); } var range = $('<li data-stopPropagation="true" ><div class="range_div"><input type="range" min="1" max="100" step="1" value="' + waterfallWidth + '" /><span>' + waterfallWidth + '</span></div></li>'); $(range).bind('input propertychange', function () { var val = $(this).find("input").eq(0).val(); GM_addStyle('#waterfall_h1{ width: ' + val + '%!important;}'); $(this).find("span").eq(0).html(val); GM_setValue("waterfallWidth", val); }); $(ul).append(range); $(ul).append('<div style="padding:4px;">和"JAV老司机"同时运行时,请关闭老司机的瀑布流<div>'); $("#navbar ul.nav").first().append($(other_select_tag)); } //根据id、name生成勾选框 function creatCheckbox(tagName, name) { var checkbox=`<li data-stopPropagation="true"> <div class="switch_div"> <label for="${tagName}_checkbox" >${name}</label><input type="checkbox" id="${tagName}_checkbox" /> </div></li>`; var $checkbox = $(checkbox); var status = tagName + "_status"; $checkbox.find("input")[0].checked = GM_getValue(status, statusDefaultMap.get(tagName)) > 0 ? true : false; $checkbox.click(function () { ($(this).find("input")[0].checked == true) ? GM_setValue(status, 1): GM_setValue(status, 0); func_List[tagName].checkbox(); }); return $checkbox; } class AvInfo { constructor(avid) { this.avid=avid; this.gid="";//查询磁力的参数 this.sample_waterfall="";//样品图片 this.avatar_waterfall="";//演员 this.bigImg=""; this.magnetTable=""; } } //用于保存视频的信息 let avInfo=new Map(); //获取 gid 演员表 视频截图 function getAvInfo(avid) { return new Promise((resolve, reject) => { if(avInfo.has(avid)){ resolve(avInfo.get(avid)); }else{ avInfofetch(avid).then(avInfo_c=>resolve(avInfo_c)); } }) }; function avInfofetch(avid) { return fetch(`${location.protocol}//${location.hostname}/`+avid) .then(response => response.text()) .then(doc => { var str = /var\s+gid\s+=\s+(\d{1,})/.exec(doc); var gid = str[1]; var avInfo_c=new AvInfo(avid); avInfo_c.gid=gid; if(GM_getValue('avInfo_status', 1)>0){ var sample_waterfall = $($.parseHTML(doc)).find("#sample-waterfall"); var avatar_waterfall = $($.parseHTML(doc)).find("#avatar-waterfall"); if(sample_waterfall.length>0){ sample_waterfall[0].id = "#" + avid + SAMPLE_SUFFIX;; sample_waterfall.addClass("pop-up-tag").addClass("avInfo"); sample_waterfall.attr("name",avid + AVINFO_SUFFIX); sample_waterfall.find("a").attr("data-group",avid); sample_waterfall.find("a.sample-box").removeClass("sample-box").addClass("sample-a-zdy"); } if(avatar_waterfall.length>0){ avatar_waterfall[0].id = "#" + avid + AVATAR_SUFFIX;; avatar_waterfall.addClass("pop-up-tag").addClass("avInfo"); avatar_waterfall.attr("name",avid + AVINFO_SUFFIX); avatar_waterfall.find("a.avatar-box").removeClass("avatar-box").addClass("avatar-box-zdy"); } avInfo_c.sample_waterfall=sample_waterfall; avInfo_c.avatar_waterfall=avatar_waterfall; } avInfo.set(avid,avInfo_c); return avInfo_c; }).catch(err => alert(err)); }; //设置点击标签 function setTag(elems) { var src_fuc = ConstCode[currentWeb].replaceImgSrc; var className =GetData.isHalfImg()?"halfImgCSS":"fullImgCSS"; for (let i = 0; i < elems.length; i++) { if ($(elems[i]).find(".avatar-box").length > 0) { $(elems).find(".avatar-box").addClass("avatar-box-b").removeClass("avatar-box"); continue; } add_Tag(elems[i], src_fuc,className); } if(currentWeb=="avmoo"){ $(elems).find(".func-div span[name='magnet']").addClass("hidden"); } lazyLoad.update(); } //自定义item 模板 function getTemplate(elem,href,src,title,avid,date,itemTag) { var template=`<div class="movie-box-b"> <div class="photo-frame-b"> <a href="${href}"><img class="lazy" data-src="${src}" ></a> </div> <div class="photo-info-b"> <a name="av_title" href="${href}"><span name="title_span">${title}</span></a> <div class="info-bottom"> <div class="info-bottom-one"> <date name="avid">${avid}</date> / <date>${date}</date> </div> <div class="info-bottom-two"> <div class="item-tag">${itemTag}</div> <div class="func-div"> <span name="magnet" class="glyphicon glyphicon-magnet func-span" data-toggle="tooltip" data-placement="bottom" title="磁力" style="transform: rotate(90deg);" ></span> <span name="download" class="glyphicon glyphicon-download func-span" data-toggle="tooltip" data-placement="bottom" title="下载封面"></span> <span name="picture" class="glyphicon glyphicon-picture func-span" data-toggle="tooltip" data-placement="bottom" title="视频截图"></span> </div> </div> </div> </div>`; return template; } function add_Tag(tag, src_fuc,className) { //替换封面为大图 Begin var photoDiv = $(tag).find("div.photo-frame")[0]; var href=$(tag).find("a")[0].href;//跳转链接 var img = $(photoDiv).children("img")[0]; var src = src_fuc(img.src);//获取大图地址 var title = img.title; //标题 var AVID = $(tag).find("date").eq(0).text(); //番号 AVID = AVID.replace(/\./g, '-'); var date = $(tag).find("date").eq(1).text(); //日期 var itemTag = ""; $(tag).find("div.photo-info .btn").toArray().forEach( x=> itemTag+=x.outerHTML); $(tag).html(getTemplate(tag,href,src,title,AVID,date,itemTag)); var bigimg = $(tag).find("img")[0]; $(bigimg).addClass(className); //替换封面为大图 end addCopyATagPre($(tag).find("a[name='av_title']").eq(0), title); addCopyATagPre($(tag).find("date[name='avid']").eq(0), AVID); var func_div=$(tag).find(".func-div")[0]; if(GM_getValue('aTag_status', 1)<1){ $(func_div).addClass("hidden"); } if(GM_getValue('itemTag_status', 1)<1){ $(tag).find(".item-tag").addClass("hidden"); } $(tag).find(".func-div span[name='picture']").click(function () { showBigImg(AVID,this); }); $(tag).find(".func-div span[name='download']").click(function () { GM_download(src, AVID + " " + title + ".jpg"); }); $(tag).find(".func-div span[name='magnet']").click(function () { showMagnetTable(AVID, src); }); } //添加复制图标 function addCopyATagPre(tag, text) { var copyATag = $('<span class="glyphicon glyphicon-bookmark copyBtn-icon" ></span>'); if(GM_getValue('copyBtn_status', 1)<1){ copyATag.addClass("hidden"); } copyATag.click(function () { var span = this; $(span).removeClass("glyphicon-bookmark").addClass('glyphicon-ok'); GM_setClipboard(text); setTimeout(function () { $(span).removeClass("glyphicon-ok").addClass('glyphicon-bookmark'); }, 1000); return false; }); $(tag).prepend(copyATag); } //显示视频截图 function showBigImg(avid,elem) { var img_id = avid + IMG_SUFFIX; $('.pop-up-tag').hide(); if ($("#" + img_id).length > 0) { $("#" + img_id).show(); $('#myModal').modal(); } else { getAvImg(avid,elem); } } //获取视频截图 function getAvImg(avid,elem) { if(elem.click_lock) { showAlert("加载中。。。"); return; } elem.click_lock=true; GM_xmlhttpRequest({ method: "GET", url: 'http://blogjav.net/?s=' + avid, onload: function (result) { if (result.status !== 200) { showAlert("blogjav.net此网站暂时无法响应"); elem.click_lock=false; return; } var doc = result.responseText; let a_array = $(doc).find(blogjavSelector); let imgUrl; for (let i = 0; i < a_array.length; i++) { imgUrl = a_array[i].href; var fhd_idx = a_array[i].href.search(/FHD/g); if (fhd_idx > 0) { break; } } if(!imgUrl){ elem.click_lock=false; return; } GM_xmlhttpRequest({ method: "GET", url: imgUrl, headers: { referrer: "http://pixhost.to/" //绕过防盗图的关键 }, onload: function (XMLHttpRequest) { var bodyStr = XMLHttpRequest.responseText; var img_src_arr = /<img .*src="https*:\/\/.*pixhost.to\/thumbs\/.*>/.exec(bodyStr); if (img_src_arr[0]){ var src = $(img_src_arr[0]).attr("src").replace('thumbs', 'images').replace('//t', '//img').replace('"', ''); console.log(src); var height=$(window).height(); var img_tag = $('<div id="' + avid + IMG_SUFFIX + '" class="pop-up-tag" ><img style="min-height:'+height+'px;" class="carousel-inner" src="' + src + '" /></div>'); var downloadBtn = $('<span class="glyphicon glyphicon-download-alt download-icon" ></span>'); downloadBtn.click(function () { GM_download(src, avid + " 截图.jpg"); }); $(img_tag).prepend(downloadBtn); $('#modal-div').append(img_tag); $('#myModal').modal(); } elem.click_lock=false; } }); } }); }; //显示磁力表格 function showMagnetTable(avid, src) { var avInfo_id = avid + AVINFO_SUFFIX; $('.pop-up-tag').hide(); if ($(".pop-up-tag[name="+avInfo_id+"]").length > 0) { $(".pop-up-tag[name="+avInfo_id+"]").show(); $('#myModal').modal(); } else { console.time("Magnetfetch耗时: "); getMagnet(avid, src).then(avInfo_c=>{ $('#modal-div').append(avInfo_c.avatar_waterfall); $('#modal-div').append(avInfo_c.sample_waterfall); $('#modal-div').append(avInfo_c.magnetTable); $('#myModal').modal(); console.timeEnd("Magnetfetch耗时: "); }); } } //ajax 获取磁力链接 function getMagnet(avid, src) { //有码和欧美 0 无码 1 var uc_code = location.pathname.search(/uncensored/) < 1 ? 0 : 1; return getAvInfo(avid).then(avInfo_c=>{ var gid=avInfo_c.gid; var url = `${location.protocol}//${location.hostname}/ajax/uncledatoolsbyajax.php?gid=${gid}&lang=zh&img=${src}&uc=${uc_code}&floor=` + Math.floor(Math.random() * 1e3 + 1); return fetch(url).then(response => response.text()) .then(doc => { var table_html = doc.substring(0, doc.indexOf('<script')).trim(); var id= avid + MAGNET_SUFFIX; var name= avid + AVINFO_SUFFIX; var table_tag = $('<table class="table pop-up-tag" name="'+name+'" style="background-color:#FFFFFF;" id="' +id+ '"></table>'); table_tag.append($(table_html)); table_tag.find("tr").each(function (i) { // 遍历 tr var me = this; if ($(me).find('a').length == 0) { return true; } var magent_url = $(me).find('a')[0].href; addCopybutton(me, magent_url); }); avInfo_c.magnetTable=table_tag; return avInfo_c; }) }); }; function addCopybutton(tag, text) { var copyButton = $('<button class="center-block">复制</button>'); copyButton.click(function () { var btn = this; btn.innerHTML = '成功'; GM_setClipboard(text); setTimeout(function () { btn.innerHTML = '复制'; }, 1000); }); var td_tag = $('<td></td>'); td_tag.append(copyButton); $(tag).prepend(td_tag); } class Lock { constructor(d = false) { this.locked = d; } lock() { this.locked = true; } unlock() { this.locked = false; } } function waterfallScrollInit(pageItem) { if ($('div#waterfall div.item').length) { $('#waterfall')[0].id = "waterfall_h1"; //解决和"JAV老司机"同时运行时样式冲突问题--begin if ($('.masonry').length > 0) { $('.masonry').addClass("masonry2"); $('.masonry').removeClass("masonry"); } if ($('#waterfall_h').length > 0) { $('#waterfall_h')[0].id = "waterfall_h1"; } //解决 JAV老司机 第619行 $pages[0].parentElement.parentElement.id = "waterfall_h"; //收藏界面样式变形的问题 if ($('#waterfall_h1.row').length > 0) { $('#waterfall_h1.row').removeAttr("id"); } //解决和"JAV老司机"同时运行时样式冲突问题--end addStyle(); //样式比瀑布流先生效,所以先隐藏掉原图 if ($('#waterfall_h1 .movie-box img').length > 0) { $('#waterfall_h1 .movie-box img').hide(); } if (waterfallScrollStatus > 0) { var w = new waterfall(pageItem); } else { var elems = $('div#waterfall_h1 div.item'); if (!elems.length) { return; }; elems.attr("style",""); $('.masonry2').empty().append(elems); setTag(elems); } } }; function waterfall(selectorcfg = {}) { this.lock = new Lock(); this.baseURI = this.getBaseURI(); this.selector = { next: 'a#next', item: 'div#waterfall div.item', cont: '.masonry2', pagi: '.pagination-lg', }; Object.assign(this.selector, selectorcfg); this.pagegen = this.fetchSync(location.href); this.anchor = $(this.selector.pagi)[0]; this._count = 0; this._1func = function (cont, elems) { cont.empty().append(elems); }; this._2func = function (cont, elems) { if (location.pathname.includes('/star/') && elems) { cont.append(elems.slice(1)); } else { cont.append(elems); } }; this._3func = function (elems) { if (!location.pathname.includes('/actresses') && elems) { //排除actresses页面 setTag(elems); } }; if ($('div#waterfall_h1 div.item').length > 0 || $('div#waterfall div.item').length > 0) { document.addEventListener('scroll', this.scroll.bind(this)); document.addEventListener('wheel', this.wheel.bind(this)); this.appendElems(this._1func); } } waterfall.prototype.getBaseURI = function () { let _ = location; return `${_.protocol}//${_.hostname}${(_.port && `:${_.port}`)}`; }; waterfall.prototype.getNextURL = function (href) { let a = document.createElement('a'); a.href = href; return `${this.baseURI}${a.pathname}${a.search}`; }; // 瀑布流脚本 waterfall.prototype.fetchURL = function (url) { console.log(`fetchUrl = ${url}`); const fetchwithcookie = fetch(url, { credentials: 'same-origin' }); return fetchwithcookie.then(response => response.text()) .then(html => new DOMParser().parseFromString(html, 'text/html')) .then(doc => { let $doc = $(doc); let href = $doc.find(this.selector.next).attr('href'); let nextURL = href ? this.getNextURL(href) : undefined; let elems = $doc.find(this.selector.item); return { nextURL, elems }; }); }; // 瀑布流脚本 waterfall.prototype.fetchSync = function* (urli) { let url = urli; do { yield new Promise((resolve, reject) => { if (this.lock.locked) { reject(); } else { this.lock.lock(); resolve(); } }).then(() => { return this.fetchURL(url).then(info => { url = info.nextURL; return info.elems; }); }).then(elems => { this.lock.unlock(); return elems; }).catch((err) => {}); } while (url); }; // 瀑布流脚本 waterfall.prototype.appendElems = function () { let nextpage = this.pagegen.next(); if (!nextpage.done) { nextpage.value.then(elems => { const cb = (this._count === 0) ? this._1func : this._2func; cb($(this.selector.cont), elems); this._count += 1; this._3func(elems); }); } return nextpage.done; }; // 瀑布流脚本 waterfall.prototype.end = function () { document.removeEventListener('scroll', this.scroll.bind(this)); document.removeEventListener('wheel', this.wheel.bind(this)); let $end = $(`<h1>The End</h1>`); $(this.anchor).replaceWith($end); }; waterfall.prototype.reachBottom = function (elem, limit) { return (elem.getBoundingClientRect().top - $(window).height()) < limit; }; waterfall.prototype.scroll = function () { if (this.reachBottom(this.anchor, 500) && this.appendElems(this._2func)) { this.end(); } }; waterfall.prototype.wheel = function () { if (this.reachBottom(this.anchor, 1000) && this.appendElems(this._2func)) { this.end(); } }; let currentWeb = "javbus";//默认为javbus let halfImg_block = false; let ConstCode = { javbus: { domainReg: /(javbus|busfan|fanbus|buscdn|cdnbus|dmmsee|seedmm|busdmm|busjav)\./i, excludePages :['/actresses','mdl=favor&sort=1','mdl=favor&sort=2','mdl=favor&sort=3','mdl=favor&sort=4','searchstar'], replaceImgSrc: function (src) { if (src.match(/pics.dmm.co.jp/)) { src = src.replace(/ps.jpg/, "pl.jpg"); } else { src = src.replace(/thumbs/, "cover").replace(/thumb/, "cover").replace(/.jpg/, "_b.jpg"); } return src; }, pageItem: { next: 'a#next', item: 'div#waterfall div.item', cont: '.masonry2', pagi: '.pagination-lg' }, uncensored: 0 }, avmoo: { domainReg: /avmoo\./i, excludePages :['/actresses'], replaceImgSrc: function (src) { src = src.replace(/ps.jpg/, "pl.jpg"); return src; }, pageItem: { next: 'a[name="nextpage"]', item: 'div#waterfall div.item', cont: '#waterfall_h1', pagi: '.pagination' } } }; function jsInit() { //判断页面的地址, 加载对应的参数 for (var key in ConstCode) { var domainReg = ConstCode[key].domainReg; if (domainReg && domainReg.test(location.href)) { currentWeb = key; //排除页面的判断 if(ConstCode[key].excludePages){ for(var page of ConstCode[key].excludePages){ if(location.pathname.includes(page)) return; } } break; } } //无码和欧美类 屏蔽 竖图模式 if (location.href.includes('/uncensored') || location.href.includes('javbus.one')) halfImg_block = true; waterfallScrollInit(ConstCode[currentWeb].pageItem); } const css_waterfall=` #waterfall_h1 { margin: 10px auto; height: auto !important; display: flex; flex-direction: row; flex-wrap: wrap; } #waterfall_h1 .item { padding :5px; } #waterfall_h1 .movie-box-b { border-radius: 5px; display: flex; /* height: 100%;*/ background-color:white; flex-direction: column; border: 1px solid rgba(0,0,0,0.2); box-shadow: 0 2px 3px 0 rgba(0,0,0,0.1); } #waterfall_h1 .avatar-box-b { display: flex; flex-direction: row; background-color:white; border-radius: 5px; align-items:center; border: 1px solid rgba(0,0,0,0.2); justify-content:space-around; } #waterfall_h1 .avatar-box-b p{ margin:0!important; } #waterfall_h1 .movie-box-b .photo-frame-b{ } #waterfall_h1 .movie-box-b .photo-frame-b a{ display:block; overflow:hidden; border-top-right-radius: 5px; border-top-left-radius: 5px; } #waterfall_h1 .movie-box-b .photo-info-b { padding: 10px; } #waterfall_h1 .movie-box-b .photo-info-b a{ color: #333; display:block; } #waterfall_h1 .movie-box-b .photo-info-b a:hover{ color: #23527c; } #waterfall_h1 date:first-of-type{ font-size: 18px; } .func-div{ white-space: nowrap; } .pop-up-tag { border-radius: 8px; overflow: hidden; } .func-span { cursor: pointer ; font-size:21px; opacity: 0.2; } .func-span:hover { opacity: 1; } .download-icon { font-size: 30px; color: black; position: absolute; right: 0; z-index: 2; cursor: pointer } .copyBtn-icon { font-size: 15px; opacity: 0.2; top: 3px !important; } .copyBtn-icon:hover { color: red; opacity: 1; } .switch_div { cursor: pointer; display: flex; flex-direction: row; flex-wrap: wrap; } .switch_div:hover { background-color: #E6E6FA; } .switch_div label { width: 80%; text-align: right; } .switch_div input { cursor: pointer; width: 20%; } .fullImgCSS { width: 100% !important; height: 100% !important; } .halfImgCSS { position: relative; left: -112%; width: 212% !important; height: 100% !important; } .range_div { display: flex; flex-direction: row; flex-wrap: wrap; } .range_div input { cursor: pointer; width: 80%; } .range_div span { width: 20%; text-align: center; } #myModal #modal-div{ background-color: rgb(6 6 6 / 50%); border-radius: 8px; } #myModal .sample-a-zdy,.avatar-box-zdy { display: inline-block; border-radius: 8px; background-color: #fff; overflow: hidden; margin: 5px; width: 140px; } #myModal .sample-a-zdy .photo-frame { overflow: hidden; margin: 10px; } #myModal .sample-a-zdy img { height: 90px; } #myModal .avatar-box-zdy .photo-frame { overflow: hidden; height: 120px; margin: 10px; } #myModal .avatar-box-zdy img { height: 120px; } #myModal .avatar-box-zdy span { font-weight: bold; text-align: center; word-wrap: break-word; display: block; padding: 10px; line-height: 22px; color: #333; background-color: #FAFAFA; border-top: 1px solid #F2F2F2; } .info-bottom,.info-bottom-two{ display: flex; justify-content: space-between; flex-wrap: wrap; } #waterfall_h1 .item-tag{ margin-right:4px; } `; jsInit(); // Your code here... })();