XNXX.com – Download Button

add a download button on bottom right

// ==UserScript==
// @name         XNXX.com – Download Button
// @namespace    http://tampermonkey.net/
// @version      2025.06.3
// @description  add a download button on bottom right
// @author       Guile93
// @match        https://www.xnxx.com/*
// @match        https://player.xnxx.com/*
// @grant        none
// @run-at       document-end
// @license MIT
// ==/UserScript==

(function () {
  'use strict';
  const BUTTON_ID = 'xnxx-download-btn';
  function findUrl() {
    if (window.html5player && typeof html5player.getVideoUrlHigh === 'function') {
      return html5player.getVideoUrlHigh() || html5player.getVideoUrlLow();
    }
    const html = document.documentElement.innerHTML;
    const mHigh = html.match(/setVideoUrlHigh\('([^']+\.mp4)/i);
    if (mHigh && mHigh[1]) return mHigh[1];
    const mLow = html.match(/setVideoUrlLow\('([^']+\.mp4)/i);
    if (mLow && mLow[1]) return mLow[1];
    return null;
  }
  const url = findUrl();
  if (!url) return;
  const btn = document.createElement('button');
  btn.id = BUTTON_ID;
  btn.textContent = '⬇ Download';
  btn.type = 'button';
  document.body.appendChild(btn);
  btn.onclick = () => window.open(url, '_blank');
  const style = document.createElement('style');
  style.textContent = `
    #${BUTTON_ID} {
      position: fixed;
      bottom: 20px;
      right: 20px;
      z-index: 999999;
      padding: 10px 20px;
      border: none;
      border-radius: 999px;
      background: linear-gradient(135deg, #b400ff, #8c00cc);
      color: #fff;
      font-size: 14px;
      font-weight: 600;
      font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
      cursor: pointer;
      box-shadow: 0 4px 14px rgba(0,0,0,.5);
      transition: transform .15s ease, box-shadow .15s ease, background .3s ease;
      backdrop-filter: blur(4px);
      filter: none !important;
      outline: none;
    }
    #${BUTTON_ID}:hover {
      transform: translateY(-2px) scale(1.05);
      background: linear-gradient(135deg, #c740ff, #a000f2);
      box-shadow: 0 8px 20px rgba(0,0,0,.6);
    }
    #${BUTTON_ID}:active {
      transform: translateY(0) scale(.97);
      box-shadow: 0 3px 10px rgba(0,0,0,.4);
    }
    #${BUTTON_ID}::before,
    #${BUTTON_ID}::after {
      display: none !important;
      content: none !important;
    }
  `;
  document.head.appendChild(style);
})();