// ==UserScript==
// @name Improved RedGIFs
// @namespace BigDuckie.ImprovedRedgifs
// @version 2025.12.22
// @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/users/*
// @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;
}`);
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("