From 082041d2c0a9a08a288ab2337a857f27ff01a22c Mon Sep 17 00:00:00 2001 From: Tamius Han Date: Sat, 22 Oct 2016 20:49:15 +0200 Subject: [PATCH] Added buttons to youtube player. Added changelogs and quick GUI tutorial to README.MD. Made manifest.json a bit less agressive with matching ( -> youtube). --- README.md | 29 +++++++++--- img-demo/interface_explained.jpg | Bin 0 -> 52041 bytes js/uw.js | 76 ++++++++++++++++++++++++------- manifest.json | 4 +- 4 files changed, 84 insertions(+), 25 deletions(-) create mode 100644 img-demo/interface_explained.jpg diff --git a/README.md b/README.md index 8a0f503..06590fc 100644 --- a/README.md +++ b/README.md @@ -24,15 +24,17 @@ This extension also allows you to zoom in or out of video (similar to how SMPlay ### Permanent install -Download the extension from Mozilla's addon page. +[v0.9.7 — Experimental version — download from here](http://tamius.net/ultrawidify) — If 30 minutes old is stable enough for you, this is it. This version is pretty much code from this repo. It's also unlisted so I don't have to go through AMO for every minor change. -[Experimental version](http://tamius.net/ultrawidify) — If 30 minutes old is stable enough for you, this is it. This version is pretty much code from this repo. It's also unlisted so I don't have to go through AMO for every minor change. **NOTE: AUTOUPDATING ISN'T IMPLEMENTED YET. You will have to update manually.** (tfw no https) - -[Regular version](https://addons.mozilla.org/en/firefox/addon/ultrawidify/) — more stable and with AMO's approval. No experimental features either. **NOTE: AMO still hasn't approved this version. You won't be able to install it until they do.** +[v0.9.1 — Regular version — download from AMO](https://addons.mozilla.org/en/firefox/addon/ultrawidify/) — more stable and with AMO's approval. No experimental features either. ## How do I use it? -Here's the list of keybinds: +This is the interface (**NOTE: AMO version doesn't have buttons yet!**): + +![If you know me and came looking for the obligatory "it's a wyvern, not a dragon" comment ... well, you just found it.](img-demo/interface-explained.jpg) + +And that's the keybinds for the actions displayed: * `w` : fit to width (will crop top and bottom if video is taller than the display) * `e` : fit to height (will crop left and right if video is wider than the display) @@ -67,5 +69,20 @@ Keybind `a` just doesn't work at all, so no 16:10. * Adding custom keybinds * Adding a proper settings page -* Adding buttons for actions in youtube's player +* ~~Adding buttons for actions in youtube's player~~ (kinda done, forcing aspect ratio still not in GUI) * ~~Adding an option to force specific aspect ratio~~ (now it's "experimental") + +## Changelog + +###v0.9.1 + +* First version on GitHub (and on AMO) with basic features (zoom, fit to width, fit to height) + +###v0.9.6 + +* Added experimental feature that tries to force an aspect ratio + +###v0.9.7 + +* Added GUI/buttons on the player. +* Script now only loads on youtube pages (iframes included) (before, this script would run on any page) diff --git a/img-demo/interface_explained.jpg b/img-demo/interface_explained.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1bbba7d4bd68bf706aeb3a8051e1aac71aa482fd GIT binary patch literal 52041 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 hJ^wg>EOh%9CkB?zvB@") + .prop("type", "text/css") + .html("\ + .uw-button{\ + display: inline-block;\ + height: 100% !important; \ + background-size: contain; \ + background-repeat: no-repeat;\ + background-position: center center;\ + }") + .appendTo("head"); + $(document).ready(function() { - console.log("=========================================================================================="); - // console.log("uw::document.ready | document is ready"); - - - // To bo naš dinamičen css - // this will be our dynamic css sheet + if(debugmsg) + console.log("=========================================================================================="); $(document).keypress(function (event) { // Tukaj ugotovimo, katero tipko smo pritisnili switch (event.key){ @@ -52,6 +62,7 @@ $(document).ready(function() { }); document.addEventListener("mozfullscreenchange", function( event ) { + onFullScreenChange(); inFullScreen = ( window.innerHeight == window.screen.height && window.innerWidth == window.screen.width); inFullScreen ? onFullscreenOn() : onFullscreenOff(); }); @@ -65,33 +76,60 @@ $(document).ready(function() { function addCtlButtons(provider_id){ - return; + // Gumb za nastavitve je bolj kot ne vselej prisoten, zato širino tega gumba uporabimo kot širino naših gumbov + // Settings button is more or less always there, so we use its width as width of our buttons + var button_width = document.getElementsByClassName("ytp-button ytp-settings-button")[0].scrollWidth; + //NOTE: jQuery tu serje da je tole zgoraj nekaj undefined, ampak skript dela pravilno. Zaenkrat nas jQuery problemi + //zato ne bojo brigal pol kurca + // + //NOTE: jQuery sometimes shits a word salat in the console and the above line seems to be the problem. Since + //everything works just fine, we pretty much ignore that + + var button_def = [ "fitw", "fith", "reset", "zoom", "uzoom" ]; if(debugmsg) console.log("uw::addCtlButtons | trying to add buttons"); - var ctl_class; var button_panel; - var buttons = []; + + // If we're on youtube: if(provider_id == 0){ - ctl_class = document.getElementsByClassName("ytp-chrome-controls")[0]; - button_panel = document.createElement('div'); - ctl_class.appendChild(button_panel); - - for( var i = 0; i < 5; i++){ + var rctl = document.getElementsByClassName("ytp-right-controls")[0]; + + for( var i = 4; i >= 0; i--){ buttons[i] = document.createElement('div'); - buttons[i].innerHTML = "test button " + i; - buttons[i].addEventListener("click", function(){ changeCSS("fitw") }, false); - button_panel.appendChild(buttons[i]); + buttons[i].style.backgroundImage = 'url(' + imageToUrl("/img/ytplayer-icons/" + button_def[i] + ".png") + ')'; + buttons[i].style.width = (button_width * 0.75) + "px"; + buttons[i].style.marginLeft = (button_width * 0.3) + "px"; + buttons[i].className += " uw-button"; + $(rctl).prepend(buttons[i]); } } + + buttons[0].onclick = function() { changeCSS("fitw") }; + buttons[1].onclick = function() { changeCSS("fith") }; + buttons[2].onclick = function() { changeCSS("reset") }; + buttons[3].onclick = function() { changeCSS("zoom") }; + buttons[4].onclick = function() { changeCSS("unzoom") }; if(debugmsg) console.log("uw::addCtlButtons | buttons added"); } +function onFullScreenChange(){ + // Popravimo velikost gumbov + // Let's fix the button size: + var button_width = document.getElementsByClassName("ytp-button ytp-settings-button")[0].scrollWidth; + for( var i = 4; i >= 0; i--){ + buttons[i].style.width = (button_width * 0.75) + "px"; + buttons[i].style.marginLeft = (button_width * 0.3) + "px"; + } + + +} + function onFullscreenOn(){ // TODO: show buttons @@ -458,3 +496,7 @@ function inIframe(){ return true; } } + +function imageToUrl(img){ + return chrome.extension.getURL(img); +} diff --git a/manifest.json b/manifest.json index ac828e1..ad4964d 100644 --- a/manifest.json +++ b/manifest.json @@ -2,14 +2,14 @@ "manifest_version": 2, "name": "Ultrawidify", - "version": "0.9.7", + "version": "0.9.8", "description": "Aspect ratio fixer for youtube that works around some people's disability to properly encode 21:9 (and sometimes, 16:9) videos.", "content_scripts": [ { - "matches": [""], + "matches": ["*://*.youtube.com/*", "*://youtube.com/*", "*://youtu.be/*"], "js": [ "js/jquery.js", "js/uw.js" ], "all_frames": true }