Greasy Fork

Fix Discogs Links

Redirect external links to the original version if lang is not "en" and modify artist links based on the lang attribute

目前为 2023-11-11 提交的版本。查看 最新版本

// ==UserScript==
// @name         Fix Discogs Links
// @version      1.1
// @description  Redirect external links to the original version if lang is not "en" and modify artist links based on the lang attribute
// @author       Kai
// @match        *://www.discogs.com/*
// @grant        none
// @namespace https://greasyfork.org/users/1215012
// ==/UserScript==
(function() {
    'use strict';
    // Check the lang attribute in the <html> tag
    var langAttribute = document.documentElement.getAttribute('lang');
    // Function to modify links
    function modifyLinks() {   
        // Check if lang is not "en"
        if (langAttribute !== 'en') {
            // Find all links that contain the "/x/" fragment and have the hrefLang="x" attribute
            var links = document.querySelectorAll('a[href*="/' + langAttribute + '"][hrefLang="' + langAttribute + '"]:not([href*="discogs.com/"])');

            // Iterate over all found links
            links.forEach(function(link) {
                // Replace the link with the version without "/x/"
                link.href = link.href.replace('/' + langAttribute, '');
            });
                 var artistLinks = document.querySelectorAll('a');

        // Iterate through the links and make modifications
        artistLinks.forEach(function(link) {
            var originalUrl = link.href;
            // Check if it is an artist link without a languge attribute
            if (originalUrl.includes('com/artist/')) {
                // Replace 'com/artist' with 'com/lang/artist'
                var newUrl = originalUrl.replace('com/artist/', 'com/' + langAttribute + '/artist/');
                // Set the modified link
                link.href = newUrl;
            }
        });

    }}
    // Execute the script when the page is loaded
    window.addEventListener('load', modifyLinks);
})
();