atualizar merges rollercoin

 avatar
RKFox
javascript
a month ago
2.7 kB
4
Indexable
(async () => {
  // Função para clicar no botão "Load more"
  function clickLoadMoreButton() {
    const button = document.querySelector('button.tree-dimensional-button.load-more');
    if (button) {
      button.click();
      return true;
    }
    return false;
  }

  // Função para coletar dados dos elementos
  function collectElementsData() {
    const cards = document.querySelectorAll('.card-wrapper');
    const data = [];

    cards.forEach((card) => {
      const rarity = card.querySelector('.item-title[style*="color"]')?.innerText || null;
      const name = card.querySelector('.item-title:not([style])')?.innerText || null;
      const imageUrl = card.querySelector('.product-image')?.src || null;
      const levelImgs = card.querySelectorAll('.item-level-img');
      const levels = Array.from(levelImgs).map((img) => img.alt || null);

      const powerElement = card.querySelector('.item-characteristic:nth-child(2) .item-level-wrapper');
      const initialPower = powerElement?.querySelector('span')?.innerText?.trim() || null;
      const finalPower = powerElement?.querySelector('.accent-text')?.innerText?.trim() || null;

      const bonusElement = card.querySelector('.item-characteristic:nth-child(3) .item-level-wrapper');
      const initialBonus = bonusElement?.querySelector('span')?.innerText?.trim() || null;
      const finalBonus = bonusElement?.querySelector('.accent-text')?.innerText?.trim() || null;

      const components = Array.from(card.querySelectorAll('.components-list .component-list-item')).map((component) => ({
        id: component.querySelector('img')?.alt || null,
        src: component.querySelector('img')?.src || null,
        currentCount: component.querySelector('.component-count.green')?.innerText?.trim() || null,
        totalCount: component.querySelector('.component-count:not(.green)')?.innerText?.trim() || null,
      }));

      const price = card.querySelector('.price-value')?.innerText?.trim() || null;

      data.push({
        rarity,
        name,
        imageUrl,
        levels,
        initialPower,
        finalPower,
        initialBonus,
        finalBonus,
        components,
        price,
      });
    });

    return data;
  }

  // Clique no botão "Load more" e aguarde elementos adicionais carregarem
  while (clickLoadMoreButton()) {
    await new Promise((resolve) => setTimeout(resolve, 2000));
  }

  // Coleta os dados após carregar todos os elementos
  const elementsData = collectElementsData();

  // Exibe o JSON no console
  console.log(JSON.stringify(elementsData, null, 2));
})();
Leave a Comment