Вы должны войти, чтобы создавать сообщения и темы.

Расширения для браузера: dota2 steam id profile finder

Всем привет!

Не жду что кто-то всё таки возьмется, скорее для тех кто хочет попрактиковаться:

  1. Это может быть как расширение для браузера, так и скрипт для Tampermonkey (Violent/Grease).
  2. Расширение должно выводить в профиле steam человека под "значками":
    2.1 32-bit ID пользователя steam
    2.2. 64-bit ID пользователя steam
    P.S. Это реализовано например здесь 
    2.3. Иконку-ссылку Dotabuff, которая ведет на страницу статистики этого пользователя (найденного по steamid).
    2.4. Иконку-ссылку Stratz, которая ведет на страницу статистики этого пользователя (найденного по steamid)
    2.5. Иконку-ссылку Opendota, которая ведет на страницу статистики этого пользователя (найденного по steamid)
    2.6. Необязательно, но если хочется посложнее: вывести картинкой ранк (картинку брать с любого ресура, т.к. она везде м.б. разная, например, Stratz).
    2.7. Необязательно, но если хочется посложнее: вывести общее количество матчей, винрейт, дата первого матча.
  3. Результат примерно такой:
    Спойлер

Приветствую! для создания Tampermonkey скрипта:

  1. Установите Tampermonkey: Убедитесь, что у вас установлен Tampermonkey (или другое подобное расширение, например, Greasemonkey) в вашем браузере.

  2. Создайте новый скрипт в Tampermonkey: Откройте панель Tampermonkey и создайте новый скрипт.

  3. Скопируйте и вставьте следующий код:

// ==UserScript==
// @name         Steam Profile Enhancer
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Add SteamID info and links to Dota statistics websites in Steam profiles
// @author       Your Name
// @match        https://steamcommunity.com/id/*
// @match        https://steamcommunity.com/profiles/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Function to convert SteamID64 to SteamID32
    function steamID64To32(steamID64) {
        return (BigInt(steamID64) - BigInt('76561197960265728')).toString();
    }

    // Function to get profile ID from URL
    function getProfileId() {
        const url = window.location.href;
        if (url.includes('/id/')) {
            return document.querySelector('.profile_small_header_name a').href.split('/').pop();
        } else if (url.includes('/profiles/')) {
            return url.split('/').pop();
        }
        return null;
    }

    // Main function
    function addSteamInfo() {
        const profileId = getProfileId();
        if (!profileId) return;

        // Determine if profileId is custom URL or numeric SteamID64
        let steamID64 = profileId.match(/^\d+$/) ? profileId : null;
        if (!steamID64) {
            fetch(`https://api.steampowered.com/ISteamUser/ResolveVanityURL/v1/?key=YOUR_STEAM_API_KEY&vanityurl=${profileId}`)
                .then(response => response.json())
                .then(data => {
                    steamID64 = data.response.steamid;
                    addInfoToProfile(steamID64);
                });
        } else {
            addInfoToProfile(steamID64);
        }
    }

    function addInfoToProfile(steamID64) {
        const steamID32 = steamID64To32(steamID64);
        const profileElement = document.querySelector('.profile_header_badgeinfo');

        // Create container for new info
        const container = document.createElement('div');
        container.style.marginTop = '10px';
        container.innerHTML = `
            <div>
                <strong>SteamID32:</strong> ${steamID32} <br>
                <strong>SteamID64:</strong> ${steamID64}
            </div>
            <div style="margin-top: 5px;">
                <a href="https://www.dotabuff.com/players/${steamID32}" target="_blank">
                    <img src="https://www.dotabuff.com/favicon.ico" alt="Dotabuff" style="width: 16px; height: 16px; margin-right: 5px;">
                </a>
                <a href="https://stratz.com/en-us/player/${steamID32}" target="_blank">
                    <img src="https://stratz.com/favicon.ico" alt="Stratz" style="width: 16px; height: 16px; margin-right: 5px;">
                </a>
                <a href="https://www.opendota.com/players/${steamID32}" target="_blank">
                    <img src="https://www.opendota.com/favicon.ico" alt="OpenDota" style="width: 16px; height: 16px;">
                </a>
            </div>
        `;
        
        // Append new info to the profile
        profileElement.appendChild(container);
    }

    // Run script when page is loaded
    window.onload = addSteamInfo;

})();

Объяснение кода:

  1. Конвертация SteamID64 в SteamID32:

    • Используется функция СкопированоsteamID64To32 для преобразования 64-битного SteamID в 32-битный.
  2. Определение SteamID из URL профиля:

    • Функция СкопированоgetProfileId определяет ID пользователя из текущего URL страницы (если это числовой ID или кастомный URL).
  3. API-запрос к Steam:

    • Если используется кастомный URL, скрипт делает запрос к API Steam для получения 64-битного SteamID.
  4. Добавление информации в профиль:

    • Создается новый контейнер в профиле Steam для вывода SteamID32 и SteamID64, а также иконок-ссылок на Dotabuff, Stratz и OpenDota.

Заметки:

  • API ключ Steam: Для работы с API Steam вам потребуется собственный API ключ. Получить его можно на Steam API ключ. Замените СкопированоYOUR_STEAM_API_KEY в коде на ваш ключ.

  • Рейтинг и дополнительные данные: Добавление информации о рейтинге и дополнительных статистиках требует дополнительных запросов к API сервисов (например, OpenDota API). Это можно добавить как отдельную функцию, используя соответствующие API.

Установка скрипта:

  1. Нажмите на значок Tampermonkey в браузере и выберите "Create a new script".
  2. Вставьте предоставленный код и сохраните скрипт.
  3. Перейдите на страницу профиля Steam, и скрипт автоматически добавит нужную информацию.

во второй строчке подправьте строчку сотрите и пропишите: // @name        Steam Profile Enhancer

Это базовый скрипт, который выводит 32-bit и 64-bit ID пользователя Steam, а также добавляет ссылки на статистику Dotabuff, Stratz и OpenDota.