Improved YouTube Transcript for Language learning, click transcript to hide the element below the video.
// ==UserScript==
// @name Improve YouTube Transcript for Language learning
// @namespace http://tampermonkey.net/
// @version 0.2
// @description Improved YouTube Transcript for Language learning, click transcript to hide the element below the video.
// @author AVES
// @include http*://*.youtube.com/watch*
// @include http*://youtube.com/watch*
// @run-at document-end
// ==/UserScript==
start();
function add(){
var $bar = document.getElementById("watch8-secondary-actions");
var $newButton= document.createElement('div');
$newButton.className="yt-uix-menu ";
var $transcriptButton=document.createElement("button");
$transcriptButton.className="yt-ui-menu-item has-icon yt-uix-menu-close-on-select action-panel-trigger action-panel-trigger-transcript";
var $label=document.createElement("span");
$label.className="yt-ui-menu-item-label";
var $textTranscript = document.createTextNode("Transcript");
$bar.appendChild($newButton);
$newButton.appendChild($transcriptButton);
$transcriptButton.appendChild($label);
$label.appendChild($textTranscript);
$transcriptButton.setAttribute("data-trigger-for","action-panel-transcript");
var $windowTranscript=document.getElementById("watch-actions-transcript");
var $h2Transcript= document.getElementsByClassName("yt-card-title");
var $title=document.getElementById("watch-header");
$transcriptButton.onclick=function(){
$title.style.display="none";
var sheet = document.createElement("STYLE");
var t = document.createTextNode(".caption-line-time { display: none; }.caption-line-text { width: 100%; }");
sheet.appendChild(t);
document.head.appendChild(sheet);
$h2Transcript[0].style.float="right";
$h2Transcript[0].style.padding="0 10px";
var $close= document.getElementById("action-panel-dismiss");
setTimeout(function(){$close.onclick=function(){$title.style.display="block";};},10);
};
}
function start() {
var pagecontainer=document.getElementById('page-container');
if (!pagecontainer) return;
if (/^https?:\/\/www\.youtube.com\/watch\?/.test(window.location.href)) run();
var isAjax=/class[\w\s"'-=]+spf\-link/.test(pagecontainer.innerHTML);
var logocontainer=document.getElementById('logo-container');
if (logocontainer && !isAjax) { // fix for blocked videos
isAjax=(' '+logocontainer.className+' ').indexOf(' spf-link ')>=0;
}
var content=document.getElementById('content');
if (isAjax && content) { // Ajax UI
var mo=window.MutationObserver||window.WebKitMutationObserver;
if(typeof mo!=='undefined') {
var observer=new mo(function(mutations) {
mutations.forEach(function(mutation) {
if(mutation.addedNodes!==null) {
for (var i=0; i<mutation.addedNodes.length; i++) {
if (mutation.addedNodes[i].id=='watch7-container' ||
mutation.addedNodes[i].id=='watch7-main-container') { // old value: movie_player
run();
break;
}
}
}
});
});
observer.observe(content, {childList: true, subtree: true}); // old value: pagecontainer
} else { // MutationObserver fallback for old browsers
pagecontainer.addEventListener('DOMNodeInserted', onNodeInserted, false);
}
}
}
function onNodeInserted(e) {
if (e && e.target && (e.target.id=='watch7-container' ||
e.target.id=='watch7-main-container')) { // old value: movie_player
run();
}
}
function finalButton(){
var buttonIframeDownload = document.createElement("iframe");
buttonIframeDownload.src = '//www.youtubeinmp3.com/widget/button/?color=ba1717&video=' + window.location.href;
buttonIframeDownload.scrolling = "no";
buttonIframeDownload.id = "buttonIframe";
buttonIframeDownload.style = "width:100%;height:60px;padding-top:20px;padding-bottom:20px;";
document.getElementById("watch-header").appendChild(buttonIframeDownload);
}
function run(){
if(!document.getElementById("parentButton") && window.location.href.substring(0, 25).indexOf("youtube.com") > -1 && window.location.href.indexOf("watch?") > -1){
var parentButton = document.createElement("div");
parentButton.className = "yt-uix-button yt-uix-button-default";
parentButton.id = "parentButton";
parentButton.style = "height: 23px;margin-left: 28px;padding-bottom:1px;";
parentButton.onclick = function () {
this.style = "display:none";
finalButton();
};
document.getElementById("watch7-user-header").appendChild(parentButton);
var childButton = document.createElement("span");
childButton.appendChild(document.createTextNode("Download MP3"));
childButton.className = "yt-uix-button-content";
childButton.style = "line-height: 25px;font-size: 12px;";
parentButton.appendChild(childButton);
add();
}
}