奈菲影视小猪手

功能较多并增加中,使用方法详见 https://greasyforks.org/zh-CN/scripts/403365-奈菲影视小猪手

Version vom 17.06.2020. Aktuellste Version

// ==UserScript==
// @name         奈菲影视小猪手
// @namespace
// @version      2.5.11
// @description  功能较多并增加中,使用方法详见 https://greasyforks.org/zh-CN/scripts/403365-奈菲影视小猪手
// @author       ok!
// @match        https://www.nfmovies.com/*
// @grant        unsafeWindow
// @run-at       document-body

// @namespace 
// ==/UserScript==

//右上图标css
var style_type1 = document.createElement("link");
style_type1.href="/templets/default/images/css/mytheme-font.css";
style_type1.rel="stylesheet";style_type1.type="text/css";document.head.appendChild(style_type1);

//暗夜模式
function getCookie(name){
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg)){return unescape(arr[2]);}
    else{return null;}
}

function dark_eye(){
    if(getCookie('dark_mode')==1){

        var style_type = document.createElement("style");style_type.id = "style_type";
        style_type.innerHTML = `body {color:#aaa !important;background-color:#333 !important;} #header-top{background-color:#222 !important;} body div.col-md-wide-3.col-xs-1.myui-sidebar.hidden-sm.hidden-xs > div{background-color:#222 !important;}
    div.myui-foot.clearfix {background-color:#222 !important;}div.myui-panel.myui-panel-bg.clearfix {background-color:#222 !important;} div.myui-panel.myui-panel-bg2.clearfix {background-color:#222 !important;}
   .tab-pane.fade.clearfix .myui-content__list.sort-list.clearfix li a{box-shadow:0 5px 10px rgba(246,246,246,.25) !important;border-radius: 5px;} #playlist li a{box-shadow:0 5px 10px rgba(246,246,246,.25);border-radius: 5px;} #video {background:black !important;} #player-sidebar > div > div > div > div.text-muted > ul > li > a {background:#5bb7fe !important;color:#eee !important;border-radius: 5px !important;} .btn-gray {box-shadow:0 5px 10px rgba(246,246,246,.25) !important;}.btn-default {background-color:#222 !important;background:#222 !important;} .dropdown-box .item {background-color:#222 !important;} a {color:#aaa !important;}a:hover { font-size: 110%;color:#eee !important;} #talk div{background-color:#888 !important;} h3 {color:#aaa !important;}  .myui-topbg{background-image:none !important;background-color:#333 !important;} #header-top > div.container div.item.clearfix{background-color:#333 !important;}`;
        document.head.appendChild(style_type);var abcd = document.createElement("SCRIPT");var qwer1 = document.createTextNode("var adTime=0;var adsTime=0;const initAd=0;var adsPage='';const adCount = 180;var adsPausePage='';var _ck1 = true;var inited = true;const timerAdCountdown = null");abcd.appendChild(qwer1); document.body.appendChild(abcd);if(document.querySelector('#aaaDiv'))document.querySelector('#aaaDiv').remove();
    }
}
dark_eye();
var sec_sub;
var wheel_sec;
var buffer_time;
var dark_mode;
function play_menu() {
    //右上角图标明亮化
    if (window.location.href.startsWith("https://www.nfmovies.com/detail/")){Myui.Other.Topbg($(".topline").offset().top);}else{Myui.Other.Topbg($("#type-hot").outerHeight()+110);}
    //点亮正在播放那集
    var abc=document.querySelector("#player-left > div > div.tips.close-box > ul > li:nth-child(1)").innerText.split("-")[1];document.querySelector(`.tab-pane.fade.in.active.clearfix > ul > li > a[title=${abc}]`).style.outline="auto"

    if(document.querySelectorAll("#header-top > div.container > div > ul.myui-header__user > li:nth-child(1) > div > div > div > p")){
        //播放设置菜单
        var li_new = document.createElement("li");
        li_new.innerHTML=`<a title="设置"><i class="fa fa-gear"></i></a><div class="dropdown-box fadeInDown"><div class="item clearfix"><p class="text-muted">播放设置</p><div class="history-list clearfix"></div><span>当前速度:</span><span id="speed_display"></span><p>选择播放速度:&nbsp;&nbsp;<button id="speed_button" style="background-color: #5bb7fe;border-radius:5px;color:white;"> &nbsp;默认 1x&nbsp; </button></p><input type="range" min="1" max="100" value="25" class="slider" id="speed_slider"><br /><br /><p>跳过片尾秒数:<input type="text" id="sec_sub" style="width:62px;height:22px;vertical-align: middle;padding: 5px;background-color: #fff;border: 2px solid #ddd;" placeholder="空则不播"></p><p>鼠标滚动秒数:<input type="text" id="wheel_sec" style="width:62px;height:22px;vertical-align: middle;padding: 5px;background-color: #fff;border: 2px solid #ddd;" placeholder="空则不动"></p><p>暂停缓存秒数:<input type="text" id="buffer_time" style="width:62px;height:22px;vertical-align: middle;padding: 5px;background-color: #fff;border: 2px solid #ddd;" placeholder="空则不缓"></p><br /><p>暗夜模式 : &nbsp; <input id="dark_mode" class="switch switch-anim" type="checkbox" checked></p></div></div>
<style>.switch {           width: 42px;           height: 20px;           position: relative;           border: 1px solid #dfdfdf;           background-color: #fdfdfd;           box-shadow: #dfdfdf 0 0 0 0 inset;           border-radius: 20px;           background-clip: content-box;           display: inline-block;           -webkit-appearance: none;           user-select: none;           outline: none;       }       .switch:before {           content: '';           width: 20px;           height: 20px;           position: absolute;           top: 0;           left: 0;           border-radius: 14px;           background-color: #fff;           box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);       }       .switch:checked {           border-color: #5bb7fe;           box-shadow: #5bb7fe 0 0 0 16px inset;           background-color: #5bb7fe;       }       .switch:checked:before {           left: 20px;       }       .switch.switch-anim {           transition: border cubic-bezier(0, 0, 0, 1) 0.4s, box-shadow cubic-bezier(0, 0, 0, 1) 0.4s;       }       .switch.switch-anim:before {           transition: left 0.3s;       }       .switch.switch-anim:checked {           box-shadow: #5bb7fe 0 0 0 16px inset;           background-color: #5bb7fe;           transition: border ease 0.4s, box-shadow ease 0.4s, background-color ease 1.2s;       }       .switch.switch-anim:checked:before {           transition: left 0.3s;       }
 .text-red {color: #aaa;}
</style>`;//开关动画有借鉴:原文链接:https://blog.csdn.net/qq_35909852/java/article/details/79079815
        li_new.classList.add('dropdown-hover');
        document.querySelector("#header-top > div.container > div > ul.myui-header__user").appendChild(li_new);
        //显示历史记录
        (function(){
            var history_get = MyTheme.Cookie.Get("history"),html='';
            if (history_get) {
                var json = eval("(" + history_get + ")");
                for (i = 0; i < json.length; i++) {
                    html+="<p><a class='text-333' href='" + json[i].link + "' title='" + json[i].name +"'><span class='pull-right text-red'>" + json[i].part + "</span>" + json[i].name + "</a></p>";
                }
            } else {
                html="<p style='padding: 80px 0; text-align: center'>您还没有看过影片哦</p>";
            }
            document.querySelector('.history-list').innerHTML=html})();



        //删除选定历史播放记录
        var p_add = document.querySelectorAll("#header-top > div.container > div > ul.myui-header__user > li:nth-child(1) > div > div > div > p");

        for(var i = 0;i<p_add.length;i++){
            var a_elem = document.createElement("a");

            a_elem.innerHTML= ' &nbsp;<span style="color:#ccc !important;background-color: #5bb7fe;border-radius:5px;font-size:70%;"> &nbsp;-删 除-&nbsp;&nbsp </span>';
            p_add[i].appendChild(a_elem);
            p_add[i].lastChild.addEventListener('click',change_cookie)};

        function change_cookie(e){
            var str_del = e.target.parentElement.parentElement.firstElementChild.title;
            console.log(str_del);
            var reg_exp =new RegExp(`{\"name\":\"${str_del}[^}]*},?`);
            var xyza= encodeURIComponent(decodeURIComponent(document.cookie.replace(/(?:(?:^|.*;\s*)history\s*\=\s*([^;]*).*$)|^.*$/, "$1")).replace(reg_exp,''));
            var exp = new Date();
            exp.setTime(exp.getTime() + 365 * 24 * 60 * 60 * 1000);
            document.cookie=`history=${xyza}; path=/; expires=${exp.toUTCString()}`;
            e.target.parentElement.parentElement.remove();
        }



        //播放设置
        var speed_display=document.getElementById("speed_display"),speed_slider=document.getElementById("speed_slider"),speed_button=document.getElementById("speed_button"),y=document.getElementById("sec_sub"),z=document.getElementById("wheel_sec"),x=document.getElementById("buffer_time"),w=document.getElementById("dark_mode");
        var video_speed;dark_mode = getCookie('dark_mode');

        video_speed = MyTheme.Cookie.Get('speed');sec_sub = MyTheme.Cookie.Get('sec_sub');wheel_sec = MyTheme.Cookie.Get('wheel_sec');buffer_time = MyTheme.Cookie.Get('buffer_time');
        video_speed?speed_display.innerHTML=video_speed+"x":speed_display.innerHTML="1x";

        setTimeout(function (){if(video_speed)
            document.querySelector('iframe').contentDocument.body.querySelector("#video > div.dplayer-video-wrap > video").playbackRate = video_speed;},4000);


        speed_slider.oninput=function(){MyTheme.Cookie.Set('speed',this.value/25);video_speed = MyTheme.Cookie.Get('speed');video_speed?speed_display.innerHTML=video_speed+"x":speed_display.innerHTML="1x";
                                        document.querySelector('iframe').contentDocument.body.querySelector("#video > div.dplayer-video-wrap > video").playbackRate = video_speed;
                                       }

        speed_button.onclick=function(){MyTheme.Cookie.Set('speed',1);video_speed = MyTheme.Cookie.Get('speed');video_speed?speed_display.innerHTML=video_speed+"x":speed_display.innerHTML="1x";
                                        document.querySelector('iframe').contentDocument.body.querySelector("#video > div.dplayer-video-wrap > video").playbackRate = video_speed;}

        sec_sub?y.value=sec_sub:y.value="";
        y.onchange=function(){MyTheme.Cookie.Set('sec_sub',this.value);sec_sub = MyTheme.Cookie.Get('sec_sub');sec_sub?y.value=sec_sub:y.value="";
                             }

        wheel_sec?z.value=wheel_sec:z.value="";
        z.onchange=function(){MyTheme.Cookie.Set('wheel_sec',this.value);wheel_sec = MyTheme.Cookie.Get('wheel_sec');wheel_sec?z.value=wheel_sec:z.value="";
                             }
        buffer_time?x.value=buffer_time:x.value="";
        x.onchange=function(){MyTheme.Cookie.Set('buffer_time',this.value);buffer_time = MyTheme.Cookie.Get('buffer_time');buffer_time?x.value=buffer_time:x.value="";
                             }
        w.checded=dark_mode; if(dark_mode!=1){document.getElementById("dark_mode").removeAttribute('checked');}
        w.onchange=function(){if(w.checked){MyTheme.Cookie.Set('dark_mode',1);dark_eye();}else{MyTheme.Cookie.Set('dark_mode',0);document.querySelector('#style_type').remove();}
                              dark_mode = MyTheme.Cookie.Get('dark_mode');

                             }

    }



}

window.onload = play_menu;



var main_script = document.createElement("script");
main_script.innerHTML = "var $myui = 0;";document.body.appendChild(main_script);
//iframe
document.querySelector('iframe#cciframe').onload=play_main;

function play_main(){

    sec_sub = MyTheme.Cookie.Get('sec_sub');
    wheel_sec=MyTheme.Cookie.Get('wheel_sec');
    buffer_time=MyTheme.Cookie.Get('buffer_time');

    var video_speed = MyTheme.Cookie.Get('speed');

    var video_elem,v_elem,video_elem1,v_elem1;
    //视频自动全屏
    function toggleFullscreen() {
        if (!document.fullscreenElement) {
            if(v_elem1.requestFullscreen){
                return v_elem1.requestFullscreen();
            }else if(v_elem1.webkitRequestFullScreen){
                return v_elem1.webkitRequestFullScreen();
            }else if(v_elem1.mozRequestFullScreen){
                return v_elem1.mozRequestFullScreen();
            }else{
                return v_elem1.msRequestFullscreen();
            }
            //  v_elem.requestFullscreen().catch(err => { console.log(`Error attempting to enable full-screen mode: ${err.message} (${err.name})`);});
        }
    }
    var fullscreen_req = setInterval(function () {
        video_elem1 = document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-video-wrap > video");
        v_elem1 =document.querySelector('#cciframe').contentDocument.body.querySelector('#video');
        if (v_elem1) {
            toggleFullscreen();clearInterval(fullscreen_req);
        }
    },5000);
    var main_timer = setInterval(function () {
        video_elem = document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-video-wrap > video");
        v_elem =document.querySelector('#cciframe').contentDocument.body.querySelector('#video');
        if (video_elem){
            main_opr();clearInterval(main_timer);}
    },3000)

    //主应用操作
    function main_opr() {
        if(video_speed&&video_elem){video_elem.playbackRate = video_speed;}

        var current_time,current_timeM;
        video_elem.onpause = function(){
            buffer_time=MyTheme.Cookie.Get('buffer_time');
            current_time = video_elem.currentTime;
            current_timeM=current_time>=3600?(Math.floor(current_time/3600)+" : "+Math.floor(current_time/60-60)+" : "+Math.floor(current_time%60)):(Math.floor(current_time/60)+" : "+Math.floor(current_time%60));
            document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-info-panel.dplayer-info-panel-hide").className='dplayer-info-panel dplayer-info-panel-show';
            document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-info-panel div.dplayer-info-panel-item.dplayer-info-panel-item-resolution > span.dplayer-info-panel-item-data").innerHTML = video_elem.videoWidth+'x'+video_elem.videoHeight;
            document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-info-panel div.dplayer-info-panel-item.dplayer-info-panel-item-version > span.dplayer-info-panel-item-data").innerHTML = "DPlayer v1.25.0 fdcf45b";
            document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-info-panel div.dplayer-info-panel-item.dplayer-info-panel-item-duration > span.dplayer-info-panel-item-title").innerHTML = '当前暂停时间';
            document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-info-panel div.dplayer-info-panel-item.dplayer-info-panel-item-duration > span.dplayer-info-panel-item-data").innerHTML = current_timeM;
            video_elem.oncanplaythrough = function(){
                video_elem.currentTime += 1;
                if(video_elem.currentTime-current_time>=(buffer_time?buffer_time:0)||(video_elem.duration<(video_elem.currentTime+30))){video_elem.currentTime = current_time;
                                                                                                                                        video_elem.oncanplaythrough='';}
            }
            video_elem.currentTime += 1;
        }
        video_elem.onplay = function(){
            video_elem.currentTime = current_time;
            document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-info-panel.dplayer-info-panel-show").className='dplayer-info-panel dplayer-info-panel-hide';
            document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-info-panel div.dplayer-info-panel-item.dplayer-info-panel-item-resolution > span.dplayer-info-panel-item-data").innerHTML="";
            document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-video-wrap > video").oncanplaythrough = "";
        }
        // 在视频框内按键ctrl或鼠标右键,直接跳到下一集
        document.querySelector('#cciframe').contentDocument.body.addEventListener("keydown", function(e) {
            if (e.keyCode == 17) {
                e.preventDefault();
                next_exec();
            }
        }, false);
        document.querySelector('#cciframe').contentDocument.body.querySelector('#video').addEventListener("contextmenu", function(e) {
            e.preventDefault();
            next_exec();
        }, false);

        // 滚轮前进后退
        video_elem.onwheel = function(e){e.preventDefault()};
        v_elem.onwheel = wheel_e;

        function wheel_e (event) {
            event.preventDefault();

            //console.log(event.deltaY);
            // event.deltaY = Math.min(Math.max(.125,event.deltaY), 4);
            //console.log(wheel_sec);
            video_elem.currentTime += (event.deltaY>0?wheel_sec/1:-wheel_sec) ;

            v_elem.onwheel="";
            setTimeout(function(){v_elem.onwheel= wheel_e;},1200);

        }

        // 去右上角logo
        if(document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-video-wrap > div.dplayer-logo"))
        {document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-video-wrap > div.dplayer-logo").innerHTML="";
        }
        //



    }


    //每隔25秒获取播放剩余时间,如在25秒内则执行主程序

    if(sec_sub !== ""){
        const sec_sub2=sec_sub/1+12;
        var auto_play = setInterval(function(){if((get_dura() < sec_sub2) && (get_dura() !== 0)){next_part();clearInterval(auto_play);}}, 15000);
    }
    //next_part();
    function next_part() {
        const sel_part1 = document.querySelector("#player-left > ul > li:nth-child(7) > a");
        if (sel_part1 != null) {
            const sec = (get_dura()-sec_sub)*1000;
            // console.log(typeof sec);
            // console.log(sec);
            if (sec !== 0) {
                setTimeout(next_exec, sec);
            }
        }
    }

    //next part 执行
    function next_exec(){
        const sel_part2 = document.querySelector("#player-left > ul > li:nth-child(7) > a");
        if (sel_part2 != null)
        {sel_part2.click();}
    }
    /*  function next_exec(){
        if(next === now){
            const sel_part2 = document.querySelector("#player-left > ul > li:nth-child(7) > a");
            if (sel_part2 != null)
            {sel_part2.click();}
        }
        else if(next !== ""){now = next;
                             const iframe_fresh2 = document.querySelector('iframe');
                             iframe_fresh2.src = iframe_fresh2.src;

                            }
    }
    */
    //获取播放剩余时间
    function get_dura() {
        const sel_start = document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-video-wrap > video").currentTime;
        const sel_fin = document.querySelector('#cciframe').contentDocument.body.querySelector("#video > div.dplayer-video-wrap > video").duration;
        if (sel_fin !== null) {
            return sel_fin-sel_start;
        }
        return 0;
    }
};

长期地址
遇到问题?请前往 GitHub 提 Issues。