Imgur to Rimgo Redirect

Redirect Imgur URLs to a Rimgo instance for privacy-friendly viewing. Handles SEO-style imgur URLs too.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Imgur to Rimgo Redirect
// @namespace    none
// @version      1.1
// @description  Redirect Imgur URLs to a Rimgo instance for privacy-friendly viewing. Handles SEO-style imgur URLs too.
// @author       OfficialJesseP
// @match        https://imgur.com/*
// @match        https://i.imgur.com/*
// @match        https://imgur.io/*
// @match        https://*.imgur.io/*
// @exclude      https://imgur.com/user/*
// @exclude      https://imgur.com/signin
// @exclude      https://imgur.com/register
// @exclude      https://imgur.com/arcade
// @exclude      https://imgur.com/upload
// @exclude      https://imgur.com/meme-generator
// @exclude      https://imgur.com/privacy
// @exclude      https://imgur.com/rules
// @exclude      https://imgur.com/emerald
// @exclude      https://imgur.com/ccpa
// @exclude      https://imgur.com/tos
// @exclude      https://imgur.com/about
// @exclude      https://imgur.com/apps
// @run-at       document-start
// @grant        none
// @license         MIT
// ==/UserScript==

(function () {
    'use strict';

    const rimgoInstance = 'https://rimgo.us.projectsegfau.lt';
    const url = new URL(window.location.href);
    let path = url.pathname;

    // Check for SEO-style album or gallery URLs
    const matchSeoURL = path.match(/^\/(a|gallery)\/(?:[a-zA-Z0-9\-]+-)?([a-zA-Z0-9]{5,7})$/);
    if (matchSeoURL) {
        // e.g., "/a/downloading-game-gBLJO" → extract group(1)="a", group(2)="gBLJO"
        const type = matchSeoURL[1]; // 'a' or 'gallery'
        const id = matchSeoURL[2];   // Actual ID (usually 5–7 characters)
        path = `/${type}/${id}`;
    }

    // Rebuild Rimgo URL and redirect
    const newUrl = rimgoInstance + path + url.search + url.hash;

    if (window.location.href !== newUrl) {
        window.location.replace(newUrl);
    }
})();