Skip to content

Instantly share code, notes, and snippets.

@funkjedi
Last active September 18, 2023 02:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save funkjedi/12fcfe9e34269d58e7a2979dc46c7285 to your computer and use it in GitHub Desktop.
Save funkjedi/12fcfe9e34269d58e7a2979dc46c7285 to your computer and use it in GitHub Desktop.
Simple YouTube bookmarklet that hides everything and makes the video full size
(function() {
class YT_Max {
constructor() {
this.maximized = false;
this.resizeHander = (event => {
this.setStyles();
});
}
toggle() {
if (this.maximized === true) {
window.removeEventListener('resize', this.resizeHander);
this.setStyles(true);
this.maximized = false;
} else {
this.maximized = true;
this.setStyles(false);
window.addEventListener('resize', this.resizeHander);
}
}
setStyles(restore) {
var styles = {
'#alerts,#clarify-box,#below,#comments,#info,#masthead-container,#messages,#meta,#related,#secondary,ytd-video-quality-promo-renderer': {
'display': 'none',
},
'#page-manager': {
'margin-top': 0,
},
'#top': {
'position': 'fixed',
'top': 0,
'bottom': 0,
'left': 0,
'right': 0,
'margin-top': 0,
'max-width': 'none',
},
'#player': {
'width': '100%',
'height': '100%',
'max-width': 'none',
},
'.ytp-chrome-bottom': {
'left': 0,
},
'.html5-video-container video': {
'position': 'relative',
'width': '100%',
'height': 'auto',
},
'ytd-watch-flexy[flexy]': {
'--ytd-watch-flexy-min-player-height': '100vh',
},
'ytd-watch-flexy[flexy] #columns.ytd-watch-flexy': {
'max-width': 'none',
'min-width': 0,
},
'ytd-watch-flexy[flexy] #primary.ytd-watch-flexy': {
'margin-left': 0,
'padding-top': 0,
'padding-right': 0,
'max-width': 'none',
'min-width': 0,
},
};
Object.keys(styles).forEach(selector => {
document.querySelectorAll(selector).forEach(node => {
if (restore === false) {
var originalStyle = {};
}
if (restore === true) {
var originalStyle = JSON.parse(node.dataset.style);
}
Object.keys(styles[selector]).forEach(propertyName => {
if (restore === true) {
node.style.setProperty(propertyName, originalStyle[propertyName]);
return;
}
if (restore === false) {
originalStyle[propertyName] = window.getComputedStyle(node).getPropertyValue(propertyName);
}
node.style.setProperty(propertyName, styles[selector][propertyName]);
});
if (restore === false) {
node.dataset.style = JSON.stringify(originalStyle);
}
if (restore === true) {
node.dataset.style = null;
}
});
});
}
}
if (!window.YT_Max) {
window.YT_Max = new YT_Max;
}
window.YT_Max.toggle();
})()

The actual bookmarklet is just the above code minified, base64 encoded and placed into an eval.

javascript:eval(atob("KGZ1bmN0aW9uKCl7Y2xhc3MgWVRfTWF4e2NvbnN0cnVjdG9yKCl7dGhpcy5tYXhpbWl6ZWQ9ZmFsc2U7dGhpcy5yZXNpemVIYW5kZXI9KGV2ZW50PT57dGhpcy5zZXRTdHlsZXMoKX0pfXRvZ2dsZSgpe2lmKHRoaXMubWF4aW1pemVkPT09dHJ1ZSl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsdGhpcy5yZXNpemVIYW5kZXIpO3RoaXMuc2V0U3R5bGVzKHRydWUpO3RoaXMubWF4aW1pemVkPWZhbHNlfWVsc2V7dGhpcy5tYXhpbWl6ZWQ9dHJ1ZTt0aGlzLnNldFN0eWxlcyhmYWxzZSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsdGhpcy5yZXNpemVIYW5kZXIpfX1zZXRTdHlsZXMocmVzdG9yZSl7dmFyIHN0eWxlcz17JyNhbGVydHMsI2NsYXJpZnktYm94LCNiZWxvdywjY29tbWVudHMsI2luZm8sI21hc3RoZWFkLWNvbnRhaW5lciwjbWVzc2FnZXMsI21ldGEsI3JlbGF0ZWQsI3NlY29uZGFyeSx5dGQtdmlkZW8tcXVhbGl0eS1wcm9tby1yZW5kZXJlcic6eydkaXNwbGF5Jzonbm9uZSd9LCcjcGFnZS1tYW5hZ2VyJzp7J21hcmdpbi10b3AnOjB9LCcjdG9wJzp7J3Bvc2l0aW9uJzonZml4ZWQnLCd0b3AnOjAsJ2JvdHRvbSc6MCwnbGVmdCc6MCwncmlnaHQnOjAsJ21hcmdpbi10b3AnOjAsJ21heC13aWR0aCc6J25vbmUnfSwnI3BsYXllcic6eyd3aWR0aCc6JzEwMCUnLCdoZWlnaHQnOicxMDAlJywnbWF4LXdpZHRoJzonbm9uZSd9LCcueXRwLWNocm9tZS1ib3R0b20nOnsnbGVmdCc6MH0sJy5odG1sNS12aWRlby1jb250YWluZXIgdmlkZW8nOnsncG9zaXRpb24nOidyZWxhdGl2ZScsJ3dpZHRoJzonMTAwJScsJ2hlaWdodCc6J2F1dG8nfSwneXRkLXdhdGNoLWZsZXh5W2ZsZXh5XSc6eyctLXl0ZC13YXRjaC1mbGV4eS1taW4tcGxheWVyLWhlaWdodCc6JzEwMHZoJ30sJ3l0ZC13YXRjaC1mbGV4eVtmbGV4eV0gI2NvbHVtbnMueXRkLXdhdGNoLWZsZXh5Jzp7J21heC13aWR0aCc6J25vbmUnLCdtaW4td2lkdGgnOjB9LCd5dGQtd2F0Y2gtZmxleHlbZmxleHldICNwcmltYXJ5Lnl0ZC13YXRjaC1mbGV4eSc6eydtYXJnaW4tbGVmdCc6MCwncGFkZGluZy10b3AnOjAsJ3BhZGRpbmctcmlnaHQnOjAsJ21heC13aWR0aCc6J25vbmUnLCdtaW4td2lkdGgnOjB9fTtPYmplY3Qua2V5cyhzdHlsZXMpLmZvckVhY2goc2VsZWN0b3I9Pntkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKS5mb3JFYWNoKG5vZGU9PntpZihyZXN0b3JlPT09ZmFsc2Upe3ZhciBvcmlnaW5hbFN0eWxlPXt9fWlmKHJlc3RvcmU9PT10cnVlKXt2YXIgb3JpZ2luYWxTdHlsZT1KU09OLnBhcnNlKG5vZGUuZGF0YXNldC5zdHlsZSl9T2JqZWN0LmtleXMoc3R5bGVzW3NlbGVjdG9yXSkuZm9yRWFjaChwcm9wZXJ0eU5hbWU9PntpZihyZXN0b3JlPT09dHJ1ZSl7bm9kZS5zdHlsZS5zZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsb3JpZ2luYWxTdHlsZVtwcm9wZXJ0eU5hbWVdKTtyZXR1cm59aWYocmVzdG9yZT09PWZhbHNlKXtvcmlnaW5hbFN0eWxlW3Byb3BlcnR5TmFtZV09d2luZG93LmdldENvbXB1dGVkU3R5bGUobm9kZSkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eU5hbWUpfW5vZGUuc3R5bGUuc2V0UHJvcGVydHkocHJvcGVydHlOYW1lLHN0eWxlc1tzZWxlY3Rvcl1bcHJvcGVydHlOYW1lXSl9KTtpZihyZXN0b3JlPT09ZmFsc2Upe25vZGUuZGF0YXNldC5zdHlsZT1KU09OLnN0cmluZ2lmeShvcmlnaW5hbFN0eWxlKX1pZihyZXN0b3JlPT09dHJ1ZSl7bm9kZS5kYXRhc2V0LnN0eWxlPW51bGx9fSl9KX19aWYoIXdpbmRvdy5ZVF9NYXgpe3dpbmRvdy5ZVF9NYXg9bmV3IFlUX01heH13aW5kb3cuWVRfTWF4LnRvZ2dsZSgpfSkoKTs="))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment