u-Youtube

make Youtube under ur control

当前为 2022-03-29 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         u-Youtube
// @name:zh-CN   功夫制霸YouTube
// @name:ua      u-Youtube
// @name:ja      カンフー支配YouTube
// @name:ko      쿵푸 지배YouTube
// @name:it      u-Youtube
// @name:de      u-Youtube
// @name:fr      u-Youtube
// @namespace    https://github.com/rasso1/u-Youtube
// @version      0.98
// @description  make Youtube under ur control
// @description:ja あなたのコントロール下でYouTubeを作る
// @description:ko 유튜브를 당신의 통제하에 두십시오
// @description:it rendi youtube sotto il tuo controllo
// @description:de Machen Sie YouTube unter Ihrer Kontrolle
// @description:fr faire de youtube sous votre contrôle
// @author       ok!
// @match        https://www.youtube.com/*
// @run-at       document-start
// @contributionURL https://paypal.me/kongfuY

// ==/UserScript==
(function() {
    'use strict';

var sec_sub,sec_fwd,wheel_sec,buffer_time,dark_mode,video_quality,video_speed,english_mode;
var expand_description = 1;

var youtube_hand = {
    dark_eye:function (){
        if(localStorage.getItem('dark_mode')==1){
            document.querySelector("html").setAttribute("dark",true);
            //document.querySelector("html").setAttribute("contentEditable",true);
        }
        else if(document.querySelector("html").hasAttribute("dark"))
        {document.querySelector("html").removeAttribute("dark")}
    },
    dark_eye1:function (){
        if(localStorage.getItem('dark_mode')==1){
            var style_type = document.createElement("style");style_type.id = "style_type";
            style_type.innerHTML = `#end > div.dropdown-hover > div{font-size:12px;color:#bbb !important;background-color:#202020 !important;}
#end > div.dropdown-hover > button{background-color:#222 !important;} #end > div.dropdown-hover path{fill:transparent !important;stroke:white !important;}
#end > div.dropdown-hover > div > div{color:#aaa !important;background-color:#202020 !important;}
#end > div.dropdown-hover > div > div p{font-size:12px;color:#bbb !important;background-color:#202020 !important;}
.dropdown-hover button div{font-size:12px;color:#aaa !important;background-color:#333 !important;}
#sec_sub,#sec_fwd,#wheel_sec,#buffer_time{font-size:12px;color:#bbb !important;background-color:#333 !important;border-radius:5px;}`;
            document.head.appendChild(style_type);
        }
    },

    //播放设置
    play_menu:function(){


        var html_app = document.createElement("div");
        html_app.innerHTML = `
   <button style="border:none;outline:none;background-color:#fff;height:37px;width:37px;margin-right:10px;" aria-label="缓存/速度设置"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" style="pointer-events: none; display: block; width: 100%; height: 100%;"><g class="style-scope yt-icon">
       <path d="M19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.1-1.65c.2-.15.25-.42.13-.64l-2-3.46c-.12-.22-.4-.3-.6-.22l-2.5 1c-.52-.4-1.08-.73-1.7-.98l-.37-2.65c-.06-.24-.27-.42-.5-.42h-4c-.27 0-.48.18-.5.42l-.4 2.65c-.6.25-1.17.6-1.7.98l-2.48-1c-.23-.1-.5 0-.6.22l-2 3.46c-.14.22-.08.5.1.64l2.12 1.65c-.04.32-.07.65-.07.98s.02.66.06.98l-2.1 1.65c-.2.15-.25.42-.13.64l2 3.46c.12.22.4.3.6.22l2.5-1c.52.4 1.08.73 1.7.98l.37 2.65c.04.24.25.42.5.42h4c.25 0 .46-.18.5-.42l.37-2.65c.6-.25 1.17-.6 1.7-.98l2.48 1c.23.1.5 0 .6-.22l2-3.46c.13-.22.08-.5-.1-.64l-2.12-1.65zM12 15.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z" fill="transparent" stroke="black"></path>
      </g></svg>
</button>

<div style="background:#fff;border-radius: 10px;left: -160px;right: 0;margin-left: 0;margin-right: -100px;padding-top: 10px;" class="dropdown-box fadeInDown"><div class="item clearfix" style="border-radius:10px;"><p style="margin:10px auto;font-size:18px;"><span class="mandarin invisible">播放设置&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="english">Playback Setting&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font size=2>Chs </font><input style="margin:auto" id="english_mode" class="switch switch-anim" type="checkbox" checked></p>
<div  style="margin:10px auto;font-size:12px;"><hr /><hr /></div>
<p style="margin:10px auto;font-size:16px;"><span class="mandarin invisible" style="margin:10px auto;font-size:16px;">当前速度:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="english">current speed:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="speed_display"></span></p>
<p style="margin:10px auto;font-size:16px;"><span class="mandarin invisible">选择播放速度:&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="english">specify speed:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><button id="speed_button" style="background-color: #5bb7fe;border-radius:5px;color:white;font-size:12px;"> &nbsp; 1x&nbsp; </button></p><input type="range" min="0" max="100" value="25" class="slider" id="speed_slider"><br /><br />
<p style="margin:10px auto;font-size:16px;"><span class="mandarin invisible">跳过片头秒数:&nbsp;&nbsp;&nbsp;</span><span class="english">skip the title:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><input type="text" id="sec_fwd" style="width:40px;height:12px;vertical-align: middle;padding: 5px;background-color:#fff;border: 2px solid #ddd;border-radius:5px;font-size:12px;" placeholder="seconds">
<p style="margin:10px auto;font-size:16px;"><span class="mandarin invisible">跳过片尾秒数:&nbsp;&nbsp;&nbsp;</span><span class="english">skip the end:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><input type="text" id="sec_sub" style="width:40px;height:12px;vertical-align: middle;padding: 5px;background-color: #fff;border: 2px solid #ddd;border-radius:5px;font-size:12px;" placeholder="seconds"></p>
<p style="margin:10px auto;font-size:16px;"><span class="mandarin invisible">鼠标滚动秒数:&nbsp;&nbsp;&nbsp;</span><span class="english">mouse scroll:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><input type="text" id="wheel_sec" style="width:40px;height:12px;vertical-align: middle;padding: 5px;background-color: #fff;border: 2px solid #ddd;border-radius:5px;font-size:12px;" placeholder="seconds"></p>
<p style="margin:10px auto;font-size:16px;"><span class="mandarin invisible">暂停缓存秒数:&nbsp;&nbsp;&nbsp;</span><span class="english">pause n cashing:&nbsp;&nbsp;&nbsp;&nbsp;</span><input type="text" id="buffer_time" style="width:40px;height:12px;vertical-align: middle;padding: 5px;background-color: #fff;border: 2px solid #ddd;border-radius:5px;font-size:12px;" placeholder="seconds"></p>
  <p style="margin:10px auto;font-size:16px;"><span class="mandarin invisible">播放质量:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>  <span class="english">specify resolution&nbsp;</span> <select id="video_quality" style="border-radius:5px;"><option value="auto">auto</option><option value="hd2160">4K 2160p</option><option value="hd1440">HD 1440p</option><option value="hd1080">HD 1080p</option><option value="hd720">720p</option> <option value="large">480p</option><option value="medium">360p</option><option value="small">240p</option><option value="tiny">144p</option> </select></p>
<p style="margin:10px auto 20px auto;font-size:16px;"><span class="mandarin invisible">暗夜模式 :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="english">dark mode:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><input style="margin:auto" id="dark_mode" class="switch switch-anim" type="checkbox" checked></p>
<p style="margin:10px auto 20px auto;font-size:16px;"><span class="mandarin invisible">心意捐赠:&nbsp; </span><span class="english">donate:&nbsp;&nbsp;</span><a href="https://paypal.me/kongfuY" style="color:#5bb7fe;">paypal.me/kongfuY</a></p></div></div>

<style>#speed_slider {width: 175px;}.invisible {display: none;}.ytd-feed-filter-chip-bar-renderer.style-scope{z-index:999 !important;}.fadeInDown{-webkit-animation:fadeInDown .5s .2s ease both;-moz-animation:fadeInDown .5s .2s ease both}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-10px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInDown{0%{opacity:0;-moz-transform:translateY(-10px)}100%{opacity:1;-moz-transform:translateY(0)}}.dropdown{position:relative}.dropdown-box{display:none;position:absolute;z-index:9999999999}.dropdown-box.top{bottom:100%;padding-bottom:10px;left:50%;margin-left:-80px}.dropdown-box.bottom{top:100%;padding-top:10px;left:50%;margin-left:-80px}.dropdown-box.left{left:100%;padding-left:10px;bottom:0}.dropdown-box.right{right:100%;padding-right:10px;bottom:0}.dropdown-box .item{padding:10px;width:250px;border-radius:2px}.dropdown-hover{position:relative}.dropdown-hover:hover .dropdown-box{display:block}</style>
<style>a {color: #670000;}.switch {width: 26px;height: 13px;position: relative;border: 1px solid #dfdfdf;background-color: #fdfdfd;box-shadow: #dfdfdf 0 0 0 0 inset; border-radius: 18px;background-clip: content-box;display: inline-block;-webkit-appearance: none;user-select: none;outline: none;} .switch:before { content: '';width: 13px;height: 13px;position: absolute;top: 0;left: 0;border-radius: 12px;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: 15px;}.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 14px 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>
`;
        html_app.classList.add('dropdown-hover');
        document.querySelector("#end").appendChild(html_app);

        //
        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"),
            s=document.getElementById("video_quality"),v=document.getElementById("sec_fwd"),t=document.getElementById("english_mode");
        dark_mode = localStorage.getItem('dark_mode');var english_mode = localStorage.getItem('english_mode');
        const mandarins = document.querySelectorAll('.mandarin');const englishs = document.querySelectorAll('.english');


        video_speed = localStorage.getItem('speed');sec_fwd = localStorage.getItem('sec_fwd');sec_sub = localStorage.getItem('sec_sub');
        wheel_sec = localStorage.getItem('wheel_sec');buffer_time = localStorage.getItem('buffer_time');video_quality = localStorage.getItem('video_quality');

        english_mode = localStorage.getItem('english_mode');
        //判读英文菜单
        if(localStorage.getItem('english_mode')==1){
            for (const mandarin of mandarins) {
                mandarin.className -= ' invisible';
            }
            for (const english of englishs) {
                english.className += ' invisible';
            }
        }

        video_speed?speed_display.innerHTML=video_speed+"x":speed_display.innerHTML="1x";

        setTimeout(function (){
            if(video_speed&&document.querySelector('#movie_player'))
                document.querySelector("#movie_player > div.html5-video-container > video").playbackRate = video_speed;},4000);

        speed_slider.value = localStorage.getItem('speed')*25;

        speed_slider.oninput=function(){localStorage.setItem('speed',this.value/25);video_speed = localStorage.getItem('speed');video_speed?speed_display.innerHTML=video_speed+"x":speed_display.innerHTML="1x";
                                        document.querySelector("#movie_player > div.html5-video-container > video").playbackRate = video_speed;
                                       }

        speed_button.onclick=function(){localStorage.setItem('speed',1);video_speed = localStorage.getItem('speed');video_speed?speed_display.innerHTML=video_speed+"x":speed_display.innerHTML="1x";
                                        document.querySelector("#movie_player > div.html5-video-container > video").playbackRate = video_speed;
                                        speed_slider.value = localStorage.getItem('speed')*25;
                                       }

        sec_fwd?v.value=sec_fwd:v.value="";
        v.onchange=function(){localStorage.setItem('sec_fwd',this.value);sec_fwd = localStorage.getItem('sec_fwd');sec_fwd?v.value=sec_fwd:v.value="";
                             }
        sec_sub?y.value=sec_sub:y.value="";
        y.onchange=function(){localStorage.setItem('sec_sub',this.value);sec_sub = localStorage.getItem('sec_sub');sec_sub?y.value=sec_sub:y.value="";
                             }

        wheel_sec?z.value=wheel_sec:z.value="";
        z.onchange=function(){localStorage.setItem('wheel_sec',this.value);wheel_sec = localStorage.getItem('wheel_sec');wheel_sec?z.value=wheel_sec:z.value="";
                             }
        buffer_time?x.value=buffer_time:x.value="";
        x.onchange=function(){localStorage.setItem('buffer_time',this.value);buffer_time = localStorage.getItem('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){localStorage.setItem('dark_mode','1');youtube_hand.dark_eye();youtube_hand.dark_eye1();}
                              else{localStorage.setItem('dark_mode',0);
                                   document.querySelector("html").removeAttribute("dark");
                                   document.querySelector('#style_type').remove();
                                  }
                              dark_mode = localStorage.getItem('dark_mode');
                             }
        t.checded=english_mode; if(english_mode!=1){document.getElementById("english_mode").removeAttribute('checked');}
        t.onchange=function(){if(t.checked){localStorage.setItem('english_mode','1');
                                            for (const mandarin of mandarins) {
                                                mandarin.className -= ' invisible';}
                                            for (const english of englishs) {
                                                english.className += ' invisible';}
                                           }
                              else{localStorage.setItem('english_mode',0);
                                   for (const mandarin of mandarins) {
                                       mandarin.className += ' invisible';}
                                   for (const english of englishs) {
                                       english.className -= ' invisible';}
                                  }
                              english_mode = localStorage.getItem('english_mode');
                             }

        if(video_quality){
            for(var i=0;i<s.length;i++){
                if(s.options[i].value==video_quality){
                    s.options[i].selected=true;
                }
            }
        }
        s.onchange=function (){
            var quality_value = s[s.selectedIndex].getAttribute("value");
            localStorage.setItem('video_quality',quality_value);
            video_quality = localStorage.getItem('video_quality');
            var avail_quali;var v_elem = document.querySelector("#movie_player");
            if((avail_quali = v_elem.getAvailableQualityLevels())&&avail_quali.indexOf(video_quality) == -1){
                v_elem.setPlaybackQualityRange(avail_quali[0],avail_quali[0]);
            }
            else{v_elem.setPlaybackQualityRange(video_quality,video_quality);}
        }

    },

    play_main:function (){

        sec_fwd = localStorage.getItem('sec_fwd');
        sec_sub = localStorage.getItem('sec_sub');
        wheel_sec = localStorage.getItem('wheel_sec');
        buffer_time = localStorage.getItem('buffer_time');

        var video_speed = localStorage.getItem('speed');

        var video_elem,v_elem;


        //每3秒试执行主应用操作
        var main_timer = setInterval(function () {
            video_elem = document.querySelector("#movie_player > div.html5-video-container > video");
            v_elem = document.querySelector("#movie_player");
           
            if (video_elem){
               main_opr();
               video_elem.ondurationchange = main_opr;

                clearInterval(main_timer);}
        },500)

        //主应用操作
        function main_opr() {
            //视频质量选择

            var avail_quali;var current_time;
            if((avail_quali = v_elem.getAvailableQualityLevels())&&avail_quali.indexOf(video_quality) == -1){
                v_elem.setPlaybackQualityRange(avail_quali[0],avail_quali[0]);
            }
            else{v_elem.setPlaybackQualityRange(video_quality,video_quality);}
            //点开视频介绍
            if(expand_description){

                if(document.getElementById("action-panel-details")) {
                    document.getElementById("action-panel-details").classList.remove("yt-uix-expander-collapsed");
                }

                if(document.querySelector("#more > .more-button.style-scope.ytd-video-secondary-info-renderer")) {
                    document.querySelector("#more > .more-button.style-scope.ytd-video-secondary-info-renderer").click();
                }
            }

            //前跳过秒数+速度+播放质量设定
            video_elem.oncanplay = function(){
                if(video_speed&&video_elem){
                    video_elem.playbackRate = video_speed;}
               // if(current_time>200){current_time=0}
                if(sec_fwd&&(video_elem.currentTime < sec_fwd/1)){
                    video_elem.currentTime += sec_fwd/1;
                    video_elem.oncanplay = "";
                }
                // video_elem.currentTime += 1;

            }

            //暂停缓存
            
            sec_sub = localStorage.getItem('sec_sub');
            video_elem.onpause = function(){
                if(!buffer_time||buffer_time == 0){return;}
                if(parseInt(video_elem.currentTime)==parseInt(video_elem.duration)){current_time=0;video_elem.onpause = "";video_elem.onplay = "";video_elem.oncanplaythrough ="";}
                else{current_time = parseInt(video_elem.currentTime);
                     video_elem.oncanplaythrough = function(){
                         if(parseInt(video_elem.currentTime)==parseInt(video_elem.duration)){current_time=0;video_elem.onpause = "";video_elem.onplay = "";video_elem.oncanplaythrough ="";}
                         else{video_elem.currentTime +=2;
                              if(sec_sub){
                                  if((video_elem.currentTime-current_time)>(buffer_time?buffer_time:0)||(video_elem.duration<(video_elem.currentTime+parseInt(sec_sub)+10)))
                                  {video_elem.currentTime = current_time;
                                   console.log(current_time);console.log(video_elem.currentTime);
                                   video_elem.oncanplaythrough='';current_time=0;}
                              }
                              else{
                                  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(){

                if(parseInt(video_elem.currentTime)==parseInt(video_elem.duration-1)){current_time = 0;video_elem.onpause = "";video_elem.onplay = "";video_elem.oncanplaythrough ="";} // new
                else if(current_time){video_elem.currentTime = current_time;
                     video_elem.oncanplaythrough = "";
                     //current_time=0;console.log("onplay ok2")
                    }
            }
            video_elem.onended = function(){current_time = 0;video_elem.onpause = "";video_elem.onplay = "";video_elem.oncanplaythrough ="";
                                           

                                           }
 //中键全屏

                                            video_elem.addEventListener("mouseup", function(e) {
                                                e.preventDefault();
                                                if(e.button==1){
                                                    //video_elem.webkitRequestFullscreen();

                                                    document.querySelector("#movie_player > div.ytp-chrome-bottom > div.ytp-chrome-controls > div.ytp-right-controls > button.ytp-fullscreen-button.ytp-button").click();
                                                    //document.webkitCancelFullScreen();

                                                }
                                            }, false);

            //中键全屏

   //         v_big.addEventListener("mouseup", function(e) {
   //             e.preventDefault();
   //             if(e.button==1){
                    //video_elem.webkitRequestFullscreen();
                    // if (!document.fullscreenElement) {
    //                document.querySelector("#movie_player > div.ytp-chrome-bottom > div.ytp-chrome-controls > div.ytp-right-controls > button.ytp-fullscreen-button.ytp-button").click();
                    /*
                        if(video_elem.requestFullscreen){
                            return video_elem.requestFullscreen();
                        }else if(video_elem.webkitRequestFullScreen){
                            return video_elem.webkitRequestFullScreen();
                        }else if(video_elem.mozRequestFullScreen){
                            return video_elem.mozRequestFullScreen();
                        }else{
                            return video_elem.msRequestFullscreen();
                        }
*/
                    // }
                    //     else{
                    //       document.querySelector("#movie_player > div.ytp-chrome-bottom > div.ytp-chrome-controls > div.ytp-right-controls > button.ytp-fullscreen-button.ytp-button").click();
                    //document.webkitCancelFullScreen();
                    //   }
  //              }
   //         }, false);

            /*
                        video_elem.onauxclick = function(e){e.preventDefault()};
                        video_elem.onauxclick = function(event) {event.preventDefault();video_elem.webkitRequestFullscreen();}

                      video_elem.onauxclick = video_elem.addEventListener("mouseup", mid_key, true);
                       function mid_key(e) {
                           // e.preventDefault();
                            if(e.button==1){
                            //video_elem.webkitRequestFullscreen();
                    if (!document.fullscreenElement) {
                        if(video_elem.requestFullscreen){
                             video_elem.removeEventListener("mouseup", mid_key, true);
                            return video_elem.requestFullscreen();
                        }else if(video_elem.webkitRequestFullScreen){
                             video_elem.removeEventListener("mouseup", mid_key, true);
                            return video_elem.webkitRequestFullScreen();
                        }else if(video_elem.mozRequestFullScreen){
                            return video_elem.mozRequestFullScreen();
                        }else{
                            return video_elem.msRequestFullscreen();
                        }

                    }
                            else{document.webkitCancelFullScreen();}
                            }
                        }*/


            // 滚轮前进后退
            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 += parseInt(event.deltaY>0?wheel_sec/1:-wheel_sec) ;

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

                //同时重设播放速度
                video_speed = localStorage.getItem('speed');
                document.querySelector("#movie_player > div.html5-video-container > video").playbackRate = video_speed;

            }
/*
            // 在视频框内按键ctrl或鼠标右键,直接跳到下一集
            v_elem.addEventListener("keydown", function(e) {
                if (e.keyCode == 17) {
                    e.preventDefault();
                    next_exec();
                }
            }, false);

            v_elem.addEventListener("contextmenu", function(e) {
                e.preventDefault();
                next_exec();
            }, false);
*/
            //每隔25秒获取播放剩余时间,如在25秒内则执行主程序
            if(sec_sub !== ""&&sec_sub !=0){
                const sec_sub2=sec_sub/1+12;
                setInterval(function(){
                    let left_duration = get_dura(),sel_part = document.querySelector("#movie_player > div.html5-video-container > video");
                    if((left_duration < sec_sub) && (left_duration !== 0) && sel_part)
                    {
                    
                        next_exec();
                        // clearInterval(auto_play);

                    }
                }, 1000);
            }

            //next part 执行
            function next_exec(){
                const sel_part2 = document.querySelector("#movie_player > div.ytp-chrome-bottom > div.ytp-chrome-controls > div.ytp-left-controls > a.ytp-next-button.ytp-button");
                if (sel_part2)
                {console.log("clicked next---");sel_part2.click();current_time=0;}
            }

            //获取播放剩余时间
            function get_dura() {
                const sel_start = document.querySelector("#movie_player > div.html5-video-container > video").currentTime;
                const sel_fin = document.querySelector("#movie_player > div.html5-video-container > video").duration;
                if (sel_fin) {
                    return sel_fin-sel_start;
                }
                return 0;
            }

        }

    },

    move_menu:function (){
        //点开显示其余items
        document.querySelector("#sections > ytd-guide-section-renderer:nth-child(2) > #items > ytd-guide-collapsible-entry-renderer > #expander-item > #endpoint").click();
        //移动频道到左顶部
        document.querySelector("#sections > ytd-guide-section-renderer:nth-child(1)").parentNode.append(document.querySelector("#sections > ytd-guide-section-renderer:nth-child(1)"))


        //页面写入script和style
        var a_bug = document.createElement("script");
        a_bug.innerHTML = `// 监听draggable的相关事件
function dragstart_handler(ev) {
   console.log("dragStart");
 // Add the target element's id to the data transfer object
 ev.dataTransfer.setData("text", ev.target.id);
  ev.dataTransfer.setData("text1", ev.target);
 console.log(ev.dataTransfer.getData("text1"));
 ev.dataTransfer.dropEffect = "move";
}
function dragEnter(ev) {
console.log("dragenter");
  ev.preventDefault();
  ev.target.className += ' drag-over';
}
function dragLeave(e) {
 ev.preventDefault();
  this.className = 'droppable';
}
function dragover_handler(ev) {
 ev.preventDefault();
 //ev.dataTransfer.dropEffect = "move"
}
function drop_handler(ev) {
 ev.preventDefault();
 // Get the id of the target and add the moved element to the target's DOM
 var data = ev.dataTransfer.getData("text");
 var first=ev.target.firstChild; //得到第一个元素
ev.target.insertBefore(document.getElementById(data),first); //在第原来的第一个元素之前插入
 //ev.target.appendChild(document.getElementById(data));
}
function dragend_handler(ev) {
  console.log("dragEnd");
  // Remove all of the drag data
  ev.dataTransfer.clearData();
  //localStorage.setItem("itemstate",document.querySelector("#sections > ytd-guide-section-renderer:nth-child(1) #items").outerHTML);

   //itemdetail写入localStorage
        var json = [];
var data = {};
var items_length=document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer").length
for(var i=0;i<items_length-1;i++){
data = {};
//data.id = document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer")[i].id;
//data.imgsrc = document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer #img")[i].src;
data.text =document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer")[i].innerText;
//data.href = document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer > #endpoint")[i].href;

json.push(data);

}
var jsonString = JSON.stringify(json);//[{"id":1,"imgsrc":"test1","text":2}]
localStorage.setItem("itemdetail",jsonString);
 //localStorage.setItem("item_new","");
}
function noAllowDrop(ev) {
console.log("stopPropagation");
        ev.stopPropagation();
    }

   //点击订阅或退订时,删除localStorage内已有相同item
  if(document.querySelector("#inner-header-container #subscribe-button")){var subscribe_button = document.querySelector("#inner-header-container #subscribe-button")}
  else if(document.querySelector("#meta-contents #top-row > #subscribe-button")){var subscribe_button = document.querySelector("#meta-contents #top-row > #subscribe-button");}
  // var subscribe_button = document.querySelector("#inner-header-container #subscribe-button")?document.querySelector("#inner-header-container #subscribe-button"):document.querySelector("#meta-contents #top-row > #subscribe-button");

      if(subscribe_button){

   subscribe_button.onclick=function(){

   //localStorage.setItem("item_new",document.querySelector("#text > a").innerText);
   //localStorage.removeItem("itemdetail",document.querySelector("#channel-name #text").innerText);
   let obj = JSON.parse(localStorage.itemdetail);
   for(let j=obj.length-1;j>-1;j--){
   if(obj[j]&&obj[j].text==document.querySelector("#channel-name #text").innerText){
        let items_down = document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer");

                        items_down.forEach(function(element,index,array) {

                            if(element.firstElementChild.title==document.querySelector("#channel-name #text").innerText){

                                document.querySelector("#sections > ytd-guide-section-renderer:nth-child(1) #items").append(element);
                                return false;
                            }
                        })

   delete obj[j];}
   }
   localStorage.setItem("itemdetail",JSON.stringify(obj));
   console.log("delete suc");
}
    }
 
`;
        document.body.appendChild(a_bug);

        var style_type2 = document.createElement("style");style_type2.id = "style_type";
        style_type2.innerHTML = `#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer{margin: 1em 0em 1em 0em !important;}
.drag-over {
  border-style: dashed;
}
.droppable{}
`;
        //#expandable-items > ytd-guide-entry-renderer{margin: 1.2em 0em 1.2em 0em !important;}
        document.head.appendChild(style_type2);

        //开始操作
        var menu_opr = setInterval(function(){

            /*
		const droppables = document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer");
        const draggable = document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer > #endpoint");

      droppables.forEach(function(element,index,array) {
             element.setAttribute("ondrop","drop_handler(event);");
             element.setAttribute("ondragover","dragover_handler(event);");
         })
 */
            //   const droppables = document.querySelector("#sections > ytd-guide-section-renderer:nth-child(1)");
            if(document.querySelector("#sections > ytd-guide-section-renderer:nth-child(1) #items > ytd-guide-entry-renderer")){
                const droppables = document.querySelector("#sections > ytd-guide-section-renderer:nth-child(1) > #items");
                const draggable = document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer");
                const no_draggable = document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer > #endpoint");
                //  const no_droppable = document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer > #endpoint > tp-yt-paper-item");
                // const no_droppable = document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer > #endpoint *");
                const no_droppable = document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items *");

                const draggable2 = document.querySelectorAll("#expandable-items > ytd-guide-entry-renderer");
                const no_draggable2 = document.querySelectorAll("#expandable-items > ytd-guide-entry-renderer > #endpoint");
                // const no_droppable2 = document.querySelectorAll("#expandable-items > ytd-guide-entry-renderer > #endpoint *");

                droppables.setAttribute("ondrop","drop_handler(event);");
                droppables.setAttribute("ondragover","dragover_handler(event);");
                // droppables.setAttribute("ondragenter","dragEnter(event);");
                // droppables.setAttribute("ondragleave","dragLeave(event);");
                no_draggable.forEach(function(element,index,array) {
                    element.setAttribute("draggable",false);
                });
                no_draggable2.forEach(function(element,index,array) {
                    element.setAttribute("draggable",false);
                });

                no_droppable.forEach(function(element,index,array) {
                    element.setAttribute("ondragover","noAllowDrop(event);");
                });
                //  no_droppable2.forEach(function(element,index,array) {
                //          element.setAttribute("ondragover","noAllowDrop(event);");
                //});


                draggable.forEach(function(element,index,array) {
                    if(index<array.length){
                        element.setAttribute("draggable",true);
                        element.setAttribute("ondragstart","dragstart_handler(event);");
                        element.setAttribute("ondragend","dragend_handler(event);");
                        if(!element.id){element.setAttribute("id","move"+index);}
                    }
                });
                let index_x =0;
                draggable2.forEach(function(element,index,array) {
                    index_x=index+7;
                    element.setAttribute("draggable",true);
                    element.setAttribute("ondragstart","dragstart_handler(event);");
                    element.setAttribute("ondragend","dragend_handler(event);");
                    element.setAttribute("id","move"+index_x);

                });

                //把隐藏内容拉出来,放入items
                const parent_item = document.querySelector("#sections > ytd-guide-section-renderer:nth-child(1) #items");
                let insert_sec = document.querySelector("#sections > ytd-guide-section-renderer:nth-child(1) #items > ytd-guide-collapsible-entry-renderer");
                let new_content2=document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) #items > ytd-guide-collapsible-entry-renderer #expanded #expandable-items > ytd-guide-entry-renderer");
                new_content2.forEach(function(element){parent_item.insertBefore(element,insert_sec)});

                //   localStorage.setItem("itemstate",JSON.stringify(ddd));
                // localStorage.setItem("itemstate",ddd.outerHTML);

                //取出保存在localStorage的itemstate,并还原回网页
                /*
        if(localStorage.getItem("itemstate")){
document.querySelector("#sections > ytd-guide-section-renderer:nth-child(1) #items").outerHTML=localStorage.getItem("itemstate");
    }
    */

                const obj = JSON.parse(localStorage.getItem("itemdetail"));

                //getItem("itemdetail")然后写入网页列表
                if(localStorage.getItem("itemdetail")){
                    /*
            //标记id-move
            draggable.forEach(function(element,index,array) {
            if(index<array.length){
                element.setAttribute("draggable",true);
                element.setAttribute("ondragstart","dragstart_handler(event);");
                element.setAttribute("ondragend","dragend_handler(event);");

                if(localStorage.getItem("item_new")){
                 if(element.firstElementChild.title==localStorage.getItem("item_new")){
                element.setAttribute("id","move"+draggable.length);
                parent_item.append(element);
                 }
            }
                else{element.setAttribute("id","move"+index);}

            }
        });

        let index_x =0;
        draggable2.forEach(function(element,index,array) {
            index_x=index+7;
            element.setAttribute("draggable",true);
            element.setAttribute("ondragstart","dragstart_handler(event);");
            element.setAttribute("ondragend","dragend_handler(event);");
            element.setAttribute("id","move"+index_x);

        });
*/
                    var items_drag = document.querySelectorAll("#sections > ytd-guide-section-renderer:nth-child(1) > #items > ytd-guide-entry-renderer");

                    for(var j=obj.length-1;j>-1;j--){
                        //   if(j==0){
                        items_drag.forEach(function(element,index,array) {

                            //console.log(element.firstElementChild.title);
                            //console.log(obj[j].text);
                            if(obj[j]&&element.firstElementChild.title==obj[j].text){

                                parent_item.prepend(element);
                                return false;
                            }
                        })
                        //    }
                        /*
                else if(j>0) {

                    items_drag.forEach(function(element,index,array) {

                      if(element.firstElementChild.title==obj[j].text){
                        parent_item.insertBefore(element,parent_item.firstElementChild.nextSibling);
                          console.log(element.firstElementChild.title);
                          console.log(obj[j].text);
                          return false;
                      }
                        })
                     }
                     */
                    }

                    //document.querySelector("#"+obj[j].id+" yt-formatted-string").innerText=obj[j].text;
                    //document.querySelector("#"+obj[j].id+" #img").src=obj[j].imgsrc;
                    //document.querySelector("#"+obj[j].id+" #endpoint").href=obj[j].href;
                    //ttt=j-1;
                    /*
                if(j==0){
                    parent_item.prepend(document.querySelector("#"+obj[j].id));

                }
                else if(j>0) {
                    //console.log(document.querySelector("#"+obj[j].id));
                    //console.log(ttt);
                    parent_item.insertBefore(document.querySelector("#"+obj[j].id),document.querySelector("#"+obj[j-1].id).nextSibling);
                }
*/


                    //
                }
               //把当日订阅置顶
                document.querySelector("#sections > ytd-guide-section-renderer:nth-child(1) > #items").prepend(document.querySelector("#sections > ytd-guide-section-renderer:nth-child(2) #items > ytd-guide-entry-renderer:nth-child(4)"));

                clearInterval(menu_opr);
             }

        },100)

        }


}



//ev.dataTransfer.setData("text/html", ev.target.outerHTML);
/*
//点击订阅时记录频道名称
var button_onclick = setInterval(function(){

                            console.log("okbutton");
    if(document.querySelector("#subscribe-button")){
document.querySelector("#subscribe-button").onclick=function(){
   localStorage.setItem("item_new",document.querySelector("#text > a").innerText);
   localStorage.removeItem(document.querySelector("#text > a").innerText);
}

      //  clearInterval(button_onclick);
    }
},8000)


*/

var load_menu = setInterval(function(){
    //youtube_hand.dark_eye();

    if(document.querySelector("#end")){
        youtube_hand.play_menu();
        youtube_hand.play_main();
        youtube_hand.dark_eye1();


        //document.querySelector("html").onpropertychange = youtube_hand.dark_eye;


        clearInterval(load_menu);
    }
},100)



setInterval(function(){ youtube_hand.dark_eye();},200)



var move_ma=setInterval(function(){
    if(document.querySelector("#sections > ytd-guide-section-renderer:nth-child(2)"))
    {
        youtube_hand.move_menu();
        /*
  let ddd= document.querySelector("#sections > ytd-guide-section-renderer:nth-child(2) #items");
       let new_content1= document.querySelector("#sections > ytd-guide-section-renderer:nth-child(2) #items").innerHTML;
        let new_content2=document.querySelector("#sections > ytd-guide-section-renderer:nth-child(2) #items > ytd-guide-collapsible-entry-renderer #expanded #expandable-items").innerHTML;
     ddd.outerHTML ='<div id="items" class="style-scope ytd-guide-section-renderer" ondrop="drop_handler(event);" ondragover="dragover_handler(event);">'+new_content1+new_content2+'</div>';
*/
        clearInterval(move_ma);
    }
},200)






})();