SteamDB Floating Search Buttons as SVG

Добавляет плавающие кнопки в виде SVG для поиска игры на online-fix.me, rustorka.com и rutracker.org на странице игры SteamDB.

Version vom 26.09.2024. Aktuellste Version

// ==UserScript==
// @name         SteamDB Floating Search Buttons as SVG
// @namespace    http://tampermonkey.net/
// @version      1.8
// @description  Добавляет плавающие кнопки в виде SVG для поиска игры на online-fix.me, rustorka.com и rutracker.org на странице игры SteamDB.
// @author       GodinRaider
// @license      MIT
// @match        https://steamdb.info/app/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Функция для создания SVG кнопки
    function createSVGButton(label, url, tooltip) {
        let button = document.createElement('a');
        button.href = url;
        button.target = '_blank'; // открывать в новой вкладке
        button.title = tooltip;
        button.className = 'floating-svg-button'; // Добавляем класс для стилей

        // Создаем SVG элемент
        let svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
        svg.setAttribute('width', '140');  // Увеличен размер кнопки по ширине
        svg.setAttribute('height', '40');  // Увеличен размер кнопки по высоте
        svg.setAttribute('viewBox', '0 0 140 40');
        svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');

        // Создаем прямоугольник (фон)
        let rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
        rect.setAttribute('width', '140');
        rect.setAttribute('height', '40');
        rect.setAttribute('rx', '5');  // Радиус скругления углов как у оригинальных кнопок
        rect.setAttribute('fill', '#4C6EF5'); // Цвет фона кнопки
        rect.setAttribute('stroke', '#000');
        rect.setAttribute('stroke-width', '1');

        // Создаем текст для кнопки
        let text = document.createElementNS("http://www.w3.org/2000/svg", "text");
        text.setAttribute('x', '70'); // Центровка по оси X
        text.setAttribute('y', '25'); // Центровка по оси Y
        text.setAttribute('fill', 'white');
        text.setAttribute('font-size', '14'); // Размер текста как у оригинальных кнопок
        text.setAttribute('font-family', 'Arial, sans-serif');
        text.setAttribute('text-anchor', 'middle'); // Центровка текста
        text.textContent = label;

        // Добавляем элементы в SVG
        svg.appendChild(rect);
        svg.appendChild(text);

        // Добавляем SVG в кнопку
        button.appendChild(svg);

        return button;
    }

    // Получаем название игры из элемента <h1 itemprop="name">
    let gameNameElement = document.querySelector('h1[itemprop="name"]');
    if (!gameNameElement) return; // Если не удалось найти название игры, прекращаем выполнение
    let gameName = encodeURIComponent(gameNameElement.textContent.trim());

    // Создаем три кнопки для поиска на разных сайтах
    let onlineFixButton = createSVGButton('Online-Fix', `https://online-fix.me/?do=search&subaction=search&story=${gameName}`, 'Поиск на online-fix.me');
    let rustorkaButton = createSVGButton('Rustorka', `http://rustorka.com/forum/tracker.php?nm=${gameName}&o=10&s=2`, 'Поиск на rustorka.com');
    let rutrackerButton = createSVGButton('RuTracker', `https://rutracker.org/forum/tracker.php?nm=${gameName}&o=10&s=2`, 'Поиск на rutracker.org');

    // Создаем контейнер для плавающих кнопок
    let buttonContainer = document.createElement('div');
    buttonContainer.className = 'floating-container';

    // Добавляем кнопки в контейнер
    buttonContainer.appendChild(onlineFixButton);
    buttonContainer.appendChild(rustorkaButton);
    buttonContainer.appendChild(rutrackerButton);

    // Добавляем контейнер на страницу
    document.body.appendChild(buttonContainer);

    // Применяем стили для плавающих кнопок
    const style = document.createElement('style');
    style.innerHTML = `
        .floating-container {
            position: fixed;
            top: 100px;
            left: 10px;
            display: flex;
            flex-direction: column;
            gap: 10px;
            z-index: 1000;
        }

        .floating-svg-button {
            display: block;
            width: 140px; /* Ширина кнопки */
            height: 40px; /* Высота кнопки */
            text-decoration: none;
            transition: transform 0.3s ease, box-shadow 0.3s ease;
        }

        .floating-svg-button:hover {
            transform: scale(1.05); /* Легкое увеличение при наведении */
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); /* Тень при наведении */
        }
    `;
    document.head.appendChild(style);
})();
长期地址
遇到问题?请前往 GitHub 提 Issues,或加Q群1031348184

赞助商

Fishcpy

广告

Rainyun

注册一下就行

Rainyun

一年攒够 12 元