Danbooru to Gelbooru Search Switcher and vice versa

Add buttons to switch between Danbooru and Gelbooru searches

// ==UserScript==
// @name Danbooru to Gelbooru Search Switcher and vice versa
// @namespace https://greasyfork.org/en/users/187317-funkyjustin
// @version 0.9
// @description Add buttons to switch between Danbooru and Gelbooru searches
// @author FunkyJustin
// @license MIT
// @match https://danbooru.donmai.us/*
// @match https://gelbooru.com/*
// @grant GM_addStyle
// ==/UserScript==
(function() {
    'use strict';
    // Add CSS styles
    GM_addStyle(`
    .search-button {
        position: fixed;
        top: 10px;
        left: 50%;
        transform: translateX(-50%);
        padding: 10px;
        background-color: #007bff;
        color: #fff;
        border: none;
        border-radius: 5px;
        text-decoration: none;
        z-index: 9999;
        opacity: 0.5; /* Initially set opacity to 0.5 */
        transition: opacity 0.3s ease; /* Add transition effect */
    }
    .search-button:hover {
        opacity: 1; /* Set opacity to 1 when hovering over the button */
    }
    `);
    // Function to clean and encode tags for URL
    function prepareTags(tags) {
        if (!tags) return '';
        return tags.split(/\s+/).map(t => t.trim()).filter(t => t.length > 0).join('+');
    }
    // Add button to switch to Gelbooru search
    function addGelbooruButton() {
        const url = new URL(window.location.href);
        const tags = url.searchParams.get('tags');
        if (!tags) return;
        const cleanTags = prepareTags(tags);
        if (!cleanTags) return;
        const gelbooruURL = `https://gelbooru.com/index.php?page=post&s=list&tags=${cleanTags}`;
        let gelbooruButton = document.createElement("a");
        gelbooruButton.textContent = "Search on Gelbooru";
        gelbooruButton.href = gelbooruURL;
        gelbooruButton.target = "_blank";
        gelbooruButton.classList.add("search-button");
        document.body.appendChild(gelbooruButton);
    }
    // Add button to switch back to Danbooru search
    function addDanbooruButton() {
        const url = new URL(window.location.href);
        const tags = url.searchParams.get('tags');
        if (!tags) return;
        const cleanTags = prepareTags(tags);
        if (!cleanTags) return;
        const danbooruURL = `https://danbooru.donmai.us/posts?tags=${cleanTags}`;
        let danbooruButton = document.createElement("a");
        danbooruButton.textContent = "Search on Danbooru";
        danbooruButton.href = danbooruURL;
        danbooruButton.target = "_blank";
        danbooruButton.classList.add("search-button");
        document.body.appendChild(danbooruButton);
    }
    // Check if on Danbooru search page and add Gelbooru button
    if (window.location.hostname === 'danbooru.donmai.us' &&
        window.location.pathname === '/posts' &&
        new URL(window.location.href).searchParams.has('tags')) {
        addGelbooruButton();
    }
    // Check if on Gelbooru search page and add Danbooru button
    if (window.location.hostname === 'gelbooru.com' &&
        window.location.pathname === '/index.php' &&
        new URL(window.location.href).searchParams.get('page') === 'post' &&
        new URL(window.location.href).searchParams.get('s') === 'list' &&
        new URL(window.location.href).searchParams.has('tags')) {
        addDanbooruButton();
    }
})();