// ==UserScript==
// @name Reddit to Libreddit Redirect
// @namespace https://kbin.social/u/LollerCorleone
// @version 1.2
// @description Redirects Reddit links to randomly chosen Libreddit instances automatically and provides an option to reload in a different instance, if the user wishes to do so.
// @author LollerCorleone
// @license GNU GPLv3
// @match *://www.reddit.com/*
// @match *://old.reddit.com/*
// @match https://libreddit.kavin.rocks/*
// @match https://reddit.invak.id/*
// @match https://reddit.simo.sh/*
// @match https://lr.riverside.rocks/*
// @match https://libreddit.strongthany.cc/*
// @match https://libreddit.privacy.com.de/*
// @match https://reddit.baby/*
// @match https://libreddit.domain.glass/*
// @match https://r.nf/*
// @match https://libreddit.de/*
// @match https://libreddit.pussthecat.org/*
// @match https://libreddit.northboot.xyz/*
// @match https://libreddit.hu/*
// @match https://libreddit.totaldarkness.net/*
// @match https://lr.vern.cc/*
// @match https://libreddit.nl/*
// @match https://reddi.tk/*
// @match https://r.walkx.fyi/*
// @match https://libreddit.kylrth.com/*
// @match https://libreddit.tiekoetter.com/*
// @match https://reddit.rtrace.io/*
// @match https://libreddit.privacydev.net/*
// @match https://r.ahwx.org/*
// @match https://libreddit.dcs0.hu/*
// @match https://reddit.dr460nf1r3.org/*
// @match https://l.opnxng.com/*
// @match https://libreddit.cachyos.org/*
// @match https://rd.funami.tech/*
// @match https://libreddit.projectsegfau.lt/*
// @match https://lr.slipfox.xyz/*
// @match https://libreddit.oxymagnesium.com/*
// @match https://reddit.utsav2.dev/*
// @match https://libreddit.freedit.eu/*
// @match https://libreddit.mha.fi/*
// @match https://libreddit.garudalinux.org/*
// @match https://lr.4201337.xyz/*
// @match https://lr.artemislena.eu/*
// @match https://libreddit.pufe.org/*
// @match https://lr.aeong.one/*
// @match https://reddit.smnz.de/*
// @match https://libreddit.bus-hit.me/*
// @match https://reddit.leptons.xyz/*
// @match https://libreddit.lunar.icu/*
// @match https://reddit.moe.ngo/*
// @match https://r.darklab.sh/*
// @match https://snoo.habedieeh.re/*
// @match https://libreddit.kutay.dev/*
// @match https://libreddit.tux.pizza/*
// @grant none
// @run-at document-start
// ==/UserScript==
(function() {
'use strict';
// List of Libreddit instances
var libredditInstances = [
'https://libreddit.kavin.rocks',
'https://reddit.invak.id',
'https://reddit.simo.sh',
'https://lr.riverside.rocks',
'https://libreddit.strongthany.cc',
'https://libreddit.privacy.com.de',
'https://reddit.baby',
'https://libreddit.domain.glass',
'https://r.nf',
'https://libreddit.de',
'https://libreddit.pussthecat.org',
'https://libreddit.northboot.xyz',
'https://libreddit.hu',
'https://libreddit.totaldarkness.net',
'https://lr.vern.cc',
'https://libreddit.nl',
'https://reddi.tk',
'https://r.walkx.fyi',
'https://libreddit.kylrth.com',
'https://libreddit.tiekoetter.com',
'https://reddit.rtrace.io',
'https://libreddit.privacydev.net',
'https://r.ahwx.org',
'https://libreddit.dcs0.hu',
'https://reddit.dr460nf1r3.org',
'https://l.opnxng.com',
'https://libreddit.cachyos.org',
'https://rd.funami.tech',
'https://libreddit.projectsegfau.lt',
'https://lr.slipfox.xyz',
'https://libreddit.oxymagnesium.com',
'https://reddit.utsav2.dev',
'https://libreddit.freedit.eu',
'https://libreddit.mha.fi',
'https://libreddit.garudalinux.org',
'https://lr.4201337.xyz',
'https://lr.artemislena.eu',
'https://libreddit.pufe.org',
'https://lr.aeong.one',
'https://reddit.smnz.de',
'https://libreddit.bus-hit.me',
'https://reddit.leptons.xyz',
'https://libreddit.lunar.icu',
'https://reddit.moe.ngo',
'https://r.darklab.sh',
'https://snoo.habedieeh.re',
'https://libreddit.kutay.dev',
'https://libreddit.tux.pizza'
];
// Get the current URL
var currentUrl = window.location.href;
// Check if the URL matches the Reddit homepage
if (currentUrl === 'https://www.reddit.com/' || currentUrl === 'https://old.reddit.com/') {
// Redirect to a random Libreddit instance's homepage
var randomInstance = libredditInstances[Math.floor(Math.random() * libredditInstances.length)];
window.location.replace(randomInstance + '/r/all');
return; // Stop further script execution
} else if (currentUrl.match(/https?:\/\/(?:www|old|libreddit)\.reddit\.com\/r\/\w+\//)) {
// Construct the Libreddit subreddit URL
var libredditUrl = currentUrl.replace(/https?:\/\/(?:www|old|libreddit)\.reddit\.com/, function(match) {
return libredditInstances[Math.floor(Math.random() * libredditInstances.length)];
});
// Redirect to the Libreddit subreddit URL
window.location.replace(libredditUrl);
return; // Stop further script execution
} else if (currentUrl.match(/https?:\/\/(?:www|old|libreddit)\.reddit\.com\/r\/\w+\/comments\/\w+\//)) {
// Construct the Libreddit post URL
var libredditUrl = currentUrl.replace(/https?:\/\/(?:www|old|libreddit)\.reddit\.com/, function(match) {
return libredditInstances[Math.floor(Math.random() * libredditInstances.length)];
});
// Redirect to the Libreddit post URL
window.location.replace(libredditUrl);
return; // Stop further script execution
}
// Create the reload button
var reloadButton = document.createElement('button');
reloadButton.textContent = 'Reload in Another Instance';
reloadButton.style.position = 'fixed';
reloadButton.style.bottom = '10px';
reloadButton.style.right = '10px';
reloadButton.style.zIndex = '9999';
reloadButton.style.padding = '8px 12px';
reloadButton.style.fontSize = '14px';
reloadButton.style.fontWeight = 'bold';
reloadButton.style.color = '#fff';
reloadButton.style.backgroundColor = '#0079d3';
reloadButton.style.border = 'none';
reloadButton.style.borderRadius = '4px';
reloadButton.style.cursor = 'pointer';
// Add event listener to reload button
reloadButton.addEventListener('click', function() {
// Redirect to a random Libreddit instance
var randomInstance = libredditInstances[Math.floor(Math.random() * libredditInstances.length)];
window.location.href = randomInstance + window.location.pathname + window.location.search + window.location.hash;
});
// Append the reload button to the document body
document.body.appendChild(reloadButton);
})();