- // ==UserScript==
- // @author Mr. Nope
- // @version 1.2
- // @name XVIDEOS Plus
- // @description A kinder XVIDEOS. Because you're worth it.
- // @namespace Nope
- // @date 2019-02-23
- // @include *xvideos.com*
- // @run-at document-start
- // @grant none
- // @license Public Domain
- // @icon https://seeklogo.com/images/X/xvideos-logo-77E7B4F168-seeklogo.com.png
- // @grant GM_addStyle
- // ==/UserScript==
-
- (() => {
- const OPTIONS = {
- autoplay: JSON.parse(localStorage.getItem('plus_autoplay')) || false,
- cinemaMode: JSON.parse(localStorage.getItem('plus_cinemaMode')) || false
- }
-
- /**
- * Shared Styles
- */
- const sharedStyles = `
- /* Our own elements */
-
- .plus-buttons {
- background: rgba(27, 27, 27, 0.9);
- box-shadow: 0px 0px 12px rgba(20, 111, 223, 0.9);
- font-size: 12px;
- position: fixed;
- bottom: 10px;
- padding: 10px 22px 8px 24px;
- right: 0;
- z-index: 100;
- transition: all 0.3s ease;
-
- /* Negative margin-right calculated later based on width of buttons */
- }
-
- .plus-buttons:hover {
- box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);
- }
-
- .plus-buttons .plus-button {
- margin: 10px 0;
- padding: 6px 15px;
- border-radius: 4px;
- font-weight: 700;
- display: block;
- position: relative;
- text-align: center;
- vertical-align: top;
- cursor: pointer;
- border: none;
- text-decoration: none;
- }
-
- .plus-buttons a.plus-button {
- background: rgb(221, 221, 221);
- color: rgb(51, 51, 51);
- }
-
- .plus-buttons a.plus-button:hover {
- background: rgb(187, 187, 187);
- color: rgb(51, 51, 51);
- }
-
- .plus-buttons a.plus-button.plus-button-isOn {
- background: rgb(20, 111, 223);
- color: rgb(255, 255, 255);
- }
-
- .plus-buttons a.plus-button.plus-button-isOn:hover {
- background: rgb(0, 91, 203);
- color: rgb(255, 255, 255);
- }
-
- .plus-hidden {
- display: none !important;
- }
- `;
-
- /**
- * Color Theme
- */
- const themeStyles = `
- .plus-buttons {
- box-shadow: 0px 0px 12px rgba(255, 153, 0, 0.85);
- }
-
- .plus-buttons:hover {
- box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);
- }
-
- .plus-buttons a.plus-button {
- background: rgb(47, 47, 47);
- color: rgb(172, 172, 172);
- }
-
- .plus-buttons a.plus-button:hover {
- background: rgb(79, 79, 79);
- color: rgb(204, 204, 204);
- }
-
- .plus-buttons a.plus-button.plus-button-isOn {
- background: rgb(255, 153, 0);
- color: rgb(0, 0, 0);
- }
-
- .plus-buttons a.plus-button.plus-button-isOn:hover {
- background: rgb(255, 153, 0);
- color: rgb(255, 255, 255);
- }
- `;
-
- /**
- * Site-Specific Styles
- */
- const generalStyles = `
- /* Hide elements */
-
- .abovePlayer,
- .streamatesModelsContainer,
- #headerUpgradePremiumBtn,
- #headerUploadBtn,
- #PornhubNetworkBar,
- #js-abContainterMain,
- #hd-rightColVideoPage > :not(#relatedVideosVPage) {
- display: none !important;
- }
-
- #related-videos .thumb-block {
- opacity: 1;
- }
-
- #related-videos .thumb-block:hover {
- opacity: 1;
- }
- `;
-
- /**
- * Run on page load
- */
- window.addEventListener('DOMContentLoaded', () => {
- const video = document.querySelector('#html5video video'); // References the HTML5 Video element
-
- /**
- * Create option buttons
- */
-
- const buttons = document.createElement('div');
-
- const scrollButton = document.createElement('a');
- const scrollButtonText = document.createElement('span');
-
- const autoplayButton = document.createElement('a');
- const autoplayButtonText = document.createElement('span');
- const autoplayButtonState = OPTIONS.autoplay ? 'plus-button-isOn' : 'plus-button-isOff';
-
- const cinemaModeButton = document.createElement('a');
- const cinemaModeButtonText = document.createElement('span');
- const cinemaModeButtonState = OPTIONS.cinemaMode ? 'plus-button-isOn' : 'plus-button-isOff';
-
- scrollButtonText.textContent = "Scroll to Top";
- scrollButtonText.classList.add('text');
- scrollButton.appendChild(scrollButtonText);
- scrollButton.classList.add('plus-button');
- scrollButton.addEventListener('click', () => {
- window.scrollTo({ top: 0 });
- });
-
- cinemaModeButtonText.textContent = 'Cinema Mode';
- cinemaModeButtonText.classList.add('text');
- cinemaModeButton.appendChild(cinemaModeButtonText);
- cinemaModeButton.classList.add(cinemaModeButtonState, 'plus-button');
- cinemaModeButton.addEventListener('click', () => {
- OPTIONS.cinemaMode = !OPTIONS.cinemaMode;
- localStorage.setItem('plus_cinemaMode', OPTIONS.cinemaMode);
-
- if (OPTIONS.cinemaMode) {
- cinemaModeButton.classList.replace('plus-button-isOff', 'plus-button-isOn');
- } else {
- cinemaModeButton.classList.replace('plus-button-isOn', 'plus-button-isOff');
- }
- });
-
- autoplayButtonText.textContent = 'Autoplay';
- autoplayButtonText.classList.add('text');
- autoplayButton.appendChild(autoplayButtonText);
- autoplayButton.classList.add(autoplayButtonState, 'plus-button');
- autoplayButton.addEventListener('click', () => {
- OPTIONS.autoplay = !OPTIONS.autoplay;
- localStorage.setItem('plus_autoplay', OPTIONS.autoplay);
-
- if (OPTIONS.autoplay) {
- autoplayButton.classList.replace('plus-button-isOff', 'plus-button-isOn');
- } else {
- autoplayButton.classList.replace('plus-button-isOn', 'plus-button-isOff');
- }
- });
-
- buttons.classList.add('plus-buttons');
-
- buttons.appendChild(scrollButton);
- buttons.appendChild(autoplayButton);
- buttons.appendChild(cinemaModeButton);
-
- document.body.appendChild(buttons);
-
- /**
- * Initialize video pages containing valid video element
- */
-
- if (/^http[s]*:\/\/[www.]*xvideos\.com\/video/.test(window.location.href) && video) {
- /**
- * Auto-enable cinema mode if enabled
- */
- if (OPTIONS.cinemaMode) {
- document.querySelector('.buttons-bar img[src*="icon-screen-expand"]').dispatchEvent(new MouseEvent('click'));
- }
-
- /**
- * Autoplay video if enabled
- */
- if (OPTIONS.autoplay) {
- document.querySelector('.buttons-bar img[src*="icon-play"]').dispatchEvent(new MouseEvent('click'));
- }
- }
-
- /**
- * Add styles
- */
-
- GM_addStyle(sharedStyles);
- GM_addStyle(themeStyles);
- GM_addStyle(generalStyles);
-
- /**
- * Add dynamic styles
- */
-
- const dynamicStyles = `
- .plus-buttons {
- margin-right: -${buttons.getBoundingClientRect().width - 23}px;
- }
-
- .plus-buttons:hover {
- margin-right: 0;
- }
- `;
-
- GM_addStyle(dynamicStyles);
- });
- })();