// ==UserScript== // @name Improved RedGIFs // @namespace BigDuckie.ImprovedRedgifs // @version 2025.12.21 // @description Fix a few annoying "features" and add an easy download button. // @icon https://www.google.com/s2/favicons?sz=64&domain=redgifs.com // @author Big Duckie // @copyright 2025, Big Duckie (https://bigduckie.dev) // @license MIT // @match https://*.redgifs.com/ // @match https://*.redgifs.com/watch/* // @match https://*.redgifs.com/niches/* // @match https://*.redgifs.com/ifr/* // @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js // @require https://raw.githubusercontent.com/pie6k/jquery.initialize/master/jquery.initialize.min.js // @grant GM_addStyle // @grant GM_download // ==/UserScript== (function () { 'use strict'; GM_addStyle(` .RGButton { background: 0 0; border: none; cursor: pointer; color: var(--white); font: var(--s1-medium); text-shadow: var(--black) 1px 0 5px; text-align: center; } .embeddedPlayer .buttons .button svg { margin-left: 3px; }`); jQuery.noConflict(); const play_svg = () => jQuery(document.createElementNS("http://www.w3.org/2000/svg", "svg")).attr({ width: 24, height: 24, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", stroke_width: 2, stroke_linecap: "round", stroke_linejoin: "round" }).html(``); const pause_svg = () => jQuery(document.createElementNS("http://www.w3.org/2000/svg", "svg")).attr({ width: 24, height: 24, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", stroke_width: 2, stroke_linecap: "round", stroke_linejoin: "round" }).html(``); const download_svg = () => jQuery(document.createElementNS("http://www.w3.org/2000/svg", "svg")).attr({ width: 24, height: 24, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", stroke_width: 2, stroke_linecap: "round", stroke_linejoin: "round" }).html(``); // Remove overlayer jQuery.initialize(".Player-OverLayer", function () { this.remove(); }); // Remove videoLink href jQuery.initialize(".videoLink", function() { jQuery(this).removeAttr("href"); }); // --- Watch pages --- jQuery.initialize(".sideBar", async function () { console.debug("detected watch page gif"); const sidebar = jQuery(this); const root = sidebar.parents(".GifPreview"); // Add play pause button sidebar.prepend( jQuery("
  • ", { class: "sideBarItem" }).append( jQuery("