Skip to content

Instantly share code, notes, and snippets.

@ohmika
Last active April 13, 2020 12:16
Show Gist options
  • Save ohmika/c02cc64e7dfeac22942c0c841c2bf2de to your computer and use it in GitHub Desktop.
Save ohmika/c02cc64e7dfeac22942c0c841c2bf2de to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name Loader.to Extension
// @namespace https://loader.to
// @version 0.1
// @description Adds button to download youtube video
// @author Loader.to
// @match *://www.youtube.com/*
// @exclude *://www.youtube.com/embed/*
// @run-at document-start
// @grant none
// ==/UserScript==
(function(){'use strict';if(document.getElementById("polymer-app")||document.getElementById("masthead")||window.Polymer){setInterval(function(){if(window.location.href.indexOf("watch?v=")<0){return false;}
if(document.getElementById("count")&&document.getElementById("loader")===null){polymerAdd();}},100);}else{setInterval(function(){if(window.location.href.indexOf("watch?v=")<0){return false;}
if(document.getElementById("watch7-subscription-container")&&document.getElementById("loader")===null){htmlAdd();}},100);}
function htmlAdd(){if(document.getElementById("watch7-subscription-container")){var wrap=document.getElementById('watch7-subscription-container');var button="<div id='loader' style='display: inline-block; margin-left: 10px; vertical-align: middle;'>";button+="<a href=\"https://loader.to/?link=https://www.youtube.com/watch?v="+ytvid(window.location.href)+"&f=720&s=1&e=1&r=extension\" title=\"Download this video\" target=\"_blank\""+
"style=\"display: inline-block; font-size: inherit; height: 22px; border: 1px solid rgb(0, 183, 90); border-radius: 5px; padding-left: 28px; cursor: pointer; vertical-align: middle; position: relative; line-height: 22px; text-decoration: none; z-index: 1; color: rgb(255, 255, 255);\">";button+="<i style=\"position: absolute; display: inline-block; left: 6px; top: 3px; background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyIgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIGlkPSJzdmcyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBkPSJNIDQsMCA0LDggMCw4IDgsMTYgMTYsOCAxMiw4IDEyLDAgNCwwIHoiIGZpbGw9IiNmZmZmZmYiIC8+PC9zdmc+); background-size: 12px; background-repeat: no-repeat; background-position: center center; width: 16px; height: 16px;\"></i>";button+="<span style=\"padding-right: 12px;\">Download</span></a></div>";var style="<style>#loader button::-moz-focus-inner{padding:0;margin:0}#loader a{background-color:#15388c}#loader a:hover{background-color:#E91E63}#loader a:active{background-color:rgb(0, 151, 74)}</style>";var tmp=wrap.innerHTML;wrap.innerHTML=tmp+button+style;}}
function polymerAdd(){var buttonDiv=document.createElement("span");buttonDiv.style.width="100%";buttonDiv.id="loader";var addButton=document.createElement("a");addButton.appendChild(document.createTextNode("Download video"));addButton.style.width="100%";addButton.style.backgroundColor="#16b322";addButton.style.color="white";addButton.style.textAlign="center";addButton.style.padding="5px 10px";addButton.style.margin="0px 10px";addButton.style.fontSize="14px";addButton.style.border="0";addButton.style.cursor="pointer";addButton.style.borderRadius="2px";addButton.style.fontFamily="Roboto, Arial, sans-serif";addButton.style.textDecoration="none";addButton.href="https://loader.to/?link=https://www.youtube.com/watch?v="+ytvid(window.location.href)+"&f=720&s=1&e=1&r=extension";addButton.target="_blank";buttonDiv.appendChild(addButton);var targetElement=document.querySelectorAll("[id='count']");for(var i=0;i<targetElement.length;i++){if(targetElement[i].className.indexOf("ytd-video-primary-info-renderer")>-1){targetElement[i].appendChild(buttonDiv);}}}
function ytvid(url){var p=/((http|https)\:\/\/)?(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube(?:-nocookie)?\.com\S*[^\w\s-])([\w-]{11})(?=[^\w-]|$)(?![?=&+%\w.-]*(?:['"][^<>]*>|<\/a>))[?=&+%\w.-]*/ig;return(url.match(p))?RegExp.$3:false;}})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment