您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
хелпер который помогает определить популярность карты на сайте astars.club
当前为
// ==UserScript== // @name astars.club Auto Helper // @namespace astars.club // @version 1.1 // @description хелпер который помогает определить популярность карты на сайте astars.club // @author astars lover // @match https://astars.club/cards/pack/ // @license MIT // @grant none // ==/UserScript== // Функция для проверки наличия дива и добавления кнопки function checkAndAddButton() { const lootboxTitleDiv = document.querySelector('.lootbox__title'); if (lootboxTitleDiv && !document.querySelector('#fetchLinksButton')) { const button = document.createElement('button'); button.id = 'fetchLinksButton'; button.innerText = 'Обновить количество ссылок'; button.style.marginTop = '10px'; button.addEventListener('click', fetchAndAddIcons); lootboxTitleDiv.appendChild(button); } } // Функция для получения данных и добавления иконок async function fetchAndAddIcons() { const cards = document.querySelectorAll('.lootbox__card'); for (const card of cards) { const cardId = card.getAttribute('data-id'); if (!cardId) continue; //card.addEventListener('click', clearIcons()); try { // Получение количества "Желающих" const needResponse = await fetch(`https://astars.club/cards/${cardId}/users/need/`); let needCount = 0; if (needResponse.ok) { const needHtml = await needResponse.text(); const needDoc = new DOMParser().parseFromString(needHtml, 'text/html'); needCount = needDoc.querySelectorAll('.profile__friends-item').length; // Проверяем наличие пагинации и умножаем количество ссылок const pagination = needDoc.querySelector('.pagination__pages'); if (pagination) { const lastPageLink = pagination.querySelector('a:last-of-type'); const totalPages = lastPageLink ? parseInt(lastPageLink.innerText, 10) : 1; if (totalPages > 1) { needCount = needCount + ((totalPages - 1) * 50); } } } // Получение количества "Готовых поменять" const tradeResponse = await fetch(`https://astars.club/cards/${cardId}/users/trade/`); let tradeCount = 0; if (tradeResponse.ok) { const tradeHtml = await tradeResponse.text(); const tradeDoc = new DOMParser().parseFromString(tradeHtml, 'text/html'); tradeCount = tradeDoc.querySelectorAll('.profile__friends-item').length; // Проверяем наличие пагинации и умножаем количество ссылок const pagination = tradeDoc.querySelector('.pagination__pages'); if (pagination) { const lastPageLink = pagination.querySelector('a:last-of-type'); const totalPages = lastPageLink ? parseInt(lastPageLink.innerText, 10) : 1; if (totalPages > 1) { tradeCount = tradeCount + ((totalPages - 1) * 50); } } } // Получение популярности и ранга const popularityResponse = await fetch(`https://astars.club/cards/${cardId}/users/`); let popularityCount = 0; let rankText = ''; if (popularityResponse.ok) { const popularityHtml = await popularityResponse.text(); const popularityDoc = new DOMParser().parseFromString(popularityHtml, 'text/html'); popularityCount = popularityDoc.querySelectorAll('.card-show__owner').length; // Проверяем наличие пагинации и умножаем количество владельцев const pagination = popularityDoc.querySelector('.pagination__pages'); if (pagination) { const lastPageLink = pagination.querySelector('a:last-of-type'); const totalPages = lastPageLink ? parseInt(lastPageLink.innerText, 10) : 1; if (totalPages > 1) { popularityCount = popularityCount + ((totalPages - 1) * 35); } } // Получение ранга const rankElement = popularityDoc.querySelector('.anime-cards__rank'); if (rankElement) { rankText = rankElement.textContent.trim(); } } // Удаляем предыдущую иконку, если она есть let existingIcon = card.querySelector('.link-icon'); if (existingIcon) { existingIcon.remove(); } // Добавляем иконку с количеством ссылок и "Готовы поменять" const icon = document.createElement('div'); icon.className = 'link-icon'; icon.style.position = 'absolute'; icon.style.top = '5px'; icon.style.right = '5px'; icon.style.backgroundColor = 'rgba(0, 0, 0, 0.7)'; icon.style.color = 'white'; icon.style.padding = '5px'; icon.style.borderRadius = '5px'; icon.style.fontSize = '12px'; icon.innerHTML = `Ранг: ${rankText}<br>Уже имеют: ${popularityCount}<br>Хотят получить: ${needCount}<br>Готовы поменять: ${tradeCount}`; card.style.position = 'relative'; // Для позиционирования иконки card.appendChild(icon); } catch (error) { console.error(`Ошибка обработки карточки ${cardId}:`, error); } } } function clearIcons() { const icons = document.querySelectorAll('.link-icon'); icons.forEach(icon => icon.remove()); } (function() { 'use strict'; // Проверяем наличие дива каждые 5 секунд setInterval(checkAndAddButton, 5000); })();