您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
当前为
// ==UserScript== // @name [Typing-Tube]試聴再生を追加 // @namespace http://tampermonkey.net/ // @version 0.9 // @description try to take over the world! // @author You // @match https://typing-tube.net/* // @exclude https://typing-tube.net/movie/edit* // @grant https://www.youtube.com/iframe_api // ==/UserScript== let videoidaa let humenID let last_hover_data let humenName let img_selector let td_flag = false let risize_dom let demo_player_html = document.createElement('div'); demo_player_html.setAttribute("id", "player_demo"); let tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); let start_time = 0 let img_height_size = 0 let img_width_size = 0 function set_preview_video(){ if(event.shiftKey && humenID != hover_id){ humenID = hover_id $.ajax({ type: 'POST', url: '/movie/lyrics/' + humenID, success:function(data){ const data_split = data.split("\n") for(let i=0;0<data_split.length;i++){ if(i>0 && data_split[i].split("\t")[2]){ start_time = Math.round(+data_split[i].split("\t")[0]) break; } } last_hover_data = data.match(/(v=).*\n/)[0].slice(2) if(last_hover_data != videoidaa && humenID && (!location.href.match("https://typing-tube.net/movie/") || location.href.match("https://typing-tube.net/movie/") && (is_played && finished || !is_played))){ demo_video_delete() const selector_ = last_hover_data.replace(/^\d+/,"").replace(/^-/,"") if(td_flag){ img_height_size = 60 img_width_size = 90 }else{ img_height_size = img_selector.height img_width_size = img_selector.width } if(document.getElementById("player_demo") == null){ if(td_flag){ td_flag.insertAdjacentHTML('beforebegin', `<div id="player_demo" style="position:absolute;"></div>`) }else{ if(demo_player_html.getAttribute("style") == "margin: auto;"){ img_selector.style.position = "absolute" img_selector.style.visibility = "hidden" } img_selector.parentNode.insertBefore(demo_player_html, img_selector); demo_player_html = document.getElementById("player_demo").cloneNode(true) // document.getElementById("player_demo").setAttribute("class",img_selector.className) risize_dom = img_selector.parentNode.querySelector("img[src*='i.ytimg.com']") } if(location.href.match("https://typing-tube.net/movie/") && is_played && finished){ typing_restart_stop() } videoidaa = last_hover_data onYouTubeIframeAPIReady_demo() } } } }); } } window.addEventListener( 'resize', function() { if(risize_dom && document.getElementById("player_demo") != null && img_height_size != 60){ img_height_size = risize_dom.height+1 img_width_size = risize_dom.width+1 document.getElementById("player_demo").setAttribute("height",img_height_size) document.getElementById("player_demo").setAttribute("width",img_width_size) } }, false ); window.addEventListener("keydown", set_preview_video,true); function video_volume_change(){ if(document.getElementById("player_demo") != null){ player_demo.setVolume(+document.getElementById("demo_volume").value) } localStorage.setItem('demo_volume',document.getElementById("demo_volume").value) } function demo_video_delete(){ if(document.getElementById("player_demo") != null){ videoidaa = "" if(risize_dom){ risize_dom.style.position = "static" risize_dom.style.visibility = "visible" document.getElementById("player_demo").remove() risize_dom = 0 }else{ document.getElementById("player_demo").remove() } } } function keydown_et(event){ if(event.key == "Escape"){ demo_video_delete() window.removeEventListener('keydown',keydown_et,true); } } function onPlayerReady_demo(event) { player_demo.setVolume(+document.getElementById("demo_volume").value) window.addEventListener('keydown',keydown_et,true); } var player_demo function onYouTubeIframeAPIReady_demo() { player_demo = new YT.Player('player_demo', { height: img_height_size+1 , width: img_width_size+1 , playerVars: { autoplay: 1, controls: 0, disablekb: 1, enablejsapi: 1, modestbranding:1, showinfo:0, origin: location.protocol + '//' + location.hostname + "/", start: start_time }, videoId: videoidaa, events: { 'onReady': onPlayerReady_demo } }); } var stylesheet = document.styleSheets.item(0) stylesheet.insertRule('.pointer:hover{ cursor: help;text-decoration : underline;}',47); document.getElementById("main_content").insertAdjacentHTML('afterbegin', `<div style="margin-top:1rem;"><label>試聴音量<input value="70" type="range" id="demo_volume"></label> <span>[再生したい動画にカーソルを合わせてShiftキー:再生] [再生中にEscapeキー:停止]</span></div>`) document.getElementById("demo_volume").addEventListener("input", video_volume_change); document.getElementById("demo_volume").setAttribute("value",localStorage.getItem('demo_volume')) var demo_stop function typing_play_stop(){ if(location.href.match("https://typing-tube.net/movie/")){ demo_stop = setInterval(function(){ if(is_played){ demo_video_delete() clearInterval(demo_stop) clearInterval(restart_stop) } },50) } } var restart_stop function typing_restart_stop(){ if(location.href.match("https://typing-tube.net/movie/")){ restart_stop = setInterval(function(){ if(!finished){ demo_video_delete() clearInterval(restart_stop) clearInterval(demo_stop) } },50) } } typing_play_stop() function get_img(event){ const find_selector_word = ["timeline","mt-3","col"] for(let i=0;i<find_selector_word.length;i++){ if(event.target.closest("[class*="+find_selector_word[i]+"]") && event.target.closest("[class*="+find_selector_word[i]+"]").querySelector("img[src*='i.ytimg.com']")){ if(find_selector_word[i] == "timeline"){ demo_player_html.setAttribute("style", "margin: auto;"); }else{ demo_player_html.setAttribute("style", "position:absolute;"); } return event.target.closest("[class*="+find_selector_word[i]+"]").querySelector("img[src*='i.ytimg.com']") } } return false } let hover_id = 0 function mouse_event(event) { if(event.type == "mouseover" && event.currentTarget.href.match("https://typing-tube.net/movie/show/")){ img_selector = get_img(event) td_flag = event.target.closest("[style*='i.ytimg.com']") ? event.target.closest("[style*='i.ytimg.com']"):false hover_id = event.currentTarget.href.match(/[0-9]+\.?[0-9]*/g) } } function eventlistener(){ let typing_link = document.querySelectorAll("[href*='movie/show/']") for(let n = 0; n < typing_link.length ; n++){ typing_link[n].addEventListener("mouseover",mouse_event,true) } } eventlistener();