TamperTube 📺

Simple youtube downloader with a selfmade API ! 📺

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         TamperTube 📺
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Simple youtube downloader with a selfmade API ! 📺
// @author       vodkarm
// @run-at       document-end
// @match        *://*.youtube.com/watch?v=*
// @license      MIT
// @icon         https://www.google.com/s2/favicons?sz=64&domain=youtube.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    // don't skid
    // author is vodkarm
    // github.com/vodkarm
    const el = document.createElement( 'div' );

    el.innerHTML = `<style>
@import url('https://fonts.googleapis.com/css2?family=Itim&display=swap');

h1 {
    font-size: 30px;
}

* {
    font-size: 15px;
}

.dialog {
    font-family: 'Itim', cursive;
	position: absolute;
	left: 50%;
	top: 50%;
	padding: 20px;
	background: rgba(0, 0, 0, 0.8);
	border: 6px solid rgba(0, 0, 0, 0.2);
	color: #fff;
	transform: translate(-50%, -50%);
	text-align: center;
	z-index: 999999;
	min-width: 400px;
	max-width: 700px;
}

.dialog * {
	color: #fff;
}

.close {
	position: absolute;
	right: 5px;
	top: 5px;
	width: 20px;
	height: 20px;
	opacity: 0.5;
	cursor: pointer;
}

.close:before, .close:after {
	content: ' ';
	position: absolute;
	left: 50%;
	top: 50%;
	width: 100%;
	height: 20%;
	transform: translate(-50%, -50%) rotate(-45deg);
	background: #fff;
}

.close:after {
	transform: translate(-50%, -50%) rotate(45deg);
}

.close:hover {
	opacity: 1;
}

.btn {
	cursor: pointer;
	padding: 1em;
	background: red;
	border: 3px solid rgba(0, 0, 0, 0.2);
	font-size: 1.2em;
	min-width: 150px;
}

.btn:active {
	transform: scale(0.8);
}

.msg {
	position: absolute;
	left: 10px;
	bottom: 10px;
	color: #fff;
	background: rgba(0, 0, 0, 0.6);
	font-weight: bolder;
	padding: 15px;
	animation: msg 0.5s forwards, msg 0.5s reverse forwards 3s;
	z-index: 999999;
	pointer-events: none;
}

</style>
<div class="msg" style="display: none;"></div>
<div class="dialog">
    <div class="close" onclick="this.parentNode.style.display='none';"></div>
	<h1>TamperTube 📺</h1>
    <br><br>
    #1 Free Youtube Downloader without ads ! 💪
    <br><br>
	<div style="display: grid; grid-template-columns: 1fr 1fr; grid-gap: 5px;">
		<div class="btn" onclick="alert('Loading of the page may be long if you are trying to download a long video, please be patient :)'); window.open('https://tampertube.vodkarm06.repl.co/mp4?url=${window.location.href}', '_blank');">📺 Download in MP4</div>
		<div class="btn" onclick="alert('Loading of the page may be long if you are trying to download a long video, please be patient :)'); window.open('https://tampertube.vodkarm06.repl.co/mp3?url=${window.location.href}', '_blank');">🔊 Download in MP3</div>
        <div class="btn" onclick="window.open('https://github.com/vodkarm', '_blank')">💻 Github</div>
        <div class="btn" onclick="window.open('https://t.me/vodkarm', '_blank')">💬 Contact</div>
	</div>
</div>`;
    const msgEl = el.querySelector( '.msg' );
    const dialogEl = el.querySelector( '.dialog' );

    while ( el.children.length > 0 ) {

        document.body.appendChild( el.children[ 0 ] );

    }
})();