Sorteio do dia das Mães

Colar comentarios

Use uma linha por comentario: usuario: comentario com pelo menos uma marcacao @perfil.

Instagram

Copiar comentarios com usuario

Use este assistente quando o copiar/colar normal do Instagram vier sem o nome de quem comentou.

1

Abra o post do sorteio no Instagram Web pelo Chrome ou Opera.

2

Role os comentarios ou clique para carregar mais comentarios antes de executar o script.

3

Aperte Ctrl + Shift + I, entre na aba Console e, se aparecer bloqueio, digite allow pasting e aperte Enter.

4

Clique em Copiar script aqui no SorteioPro, cole no Console do Instagram e aperte Enter.

5

Espere aparecer a mensagem de comentarios copiados. Se abrir uma caixa grande no Instagram, selecione o texto e copie com Ctrl + C.

6

Volte ao SorteioPro, cole o resultado neste campo e clique em Analisar comentarios.

(async function () {
  const esperar = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

  function encontrarAreaRolagem() {
    const candidatos = Array.from(document.querySelectorAll('div, section, main'));
    return candidatos
      .filter((el) => el.scrollHeight > el.clientHeight + 250)
      .sort((a, b) => b.scrollHeight - a.scrollHeight)[0] || document.scrollingElement;
  }

  function clicarMaisComentarios() {
    const botoes = Array.from(document.querySelectorAll('button, div[role="button"], span[role="button"]'));
    const botao = botoes.find((el) => {
      const texto = (el.innerText || el.textContent || '').toLowerCase();
      return texto.includes('ver mais comentarios') ||
        texto.includes('ver mais comentários') ||
        texto.includes('view more comments') ||
        texto.includes('load more comments');
    });

    if (botao) {
      botao.click();
      return true;
    }
    return false;
  }

  function extrairComentarios() {
    const linhas = [];
    const vistos = new Set();
    const itens = Array.from(document.querySelectorAll('article ul li, ul li, div[role="dialog"] ul li'));

    itens.forEach((item) => {
      const links = Array.from(item.querySelectorAll('a[href^="/"]'));
      const usuarioLink = links.find((link) => {
        const href = link.getAttribute('href') || '';
        const texto = (link.textContent || '').trim();
        return /^\/[A-Za-z0-9._]+\/?$/.test(href) && texto && !href.includes('/p/');
      });

      if (!usuarioLink) return;

      const usuario = usuarioLink.textContent.trim().replace('@', '');
      const textoItem = (item.innerText || '').trim();
      const partes = textoItem.split('\n').map((parte) => parte.trim()).filter(Boolean);
      const comentario = partes
        .filter((parte) => parte !== usuario)
        .filter((parte) => !/^(responder|reply|curtidas?|likes?|ver traducao|ver tradução)$/i.test(parte))
        .join(' ')
        .replace(/\s+/g, ' ')
        .trim();

      if (!usuario || !comentario || !comentario.includes('@')) return;

      const linha = `${usuario}: ${comentario}`;
      if (!vistos.has(linha)) {
        vistos.add(linha);
        linhas.push(linha);
      }
    });

    return linhas;
  }

  const area = encontrarAreaRolagem();
  let totalAnterior = 0;
  let semNovos = 0;

  console.log('SorteioPro: carregando comentarios. Aguarde...');

  for (let tentativa = 0; tentativa < 80 && semNovos < 8; tentativa++) {
    clicarMaisComentarios();
    area.scrollTop = area.scrollHeight;
    window.scrollTo(0, document.body.scrollHeight);
    await esperar(900);

    const totalAtual = extrairComentarios().length;
    console.log(`SorteioPro: ${totalAtual} comentarios com @ encontrados...`);

    if (totalAtual === totalAnterior) {
      semNovos++;
    } else {
      semNovos = 0;
      totalAnterior = totalAtual;
    }
  }

  const linhas = extrairComentarios();
  const textoFinal = linhas.join('\n');

  try {
    await navigator.clipboard.writeText(textoFinal);
    console.log(`SorteioPro: ${linhas.length} comentarios copiados. Agora cole no SorteioPro.`);
    return;
  } catch (erroClipboard) {
    try {
      copy(textoFinal);
      console.log(`SorteioPro: ${linhas.length} comentarios copiados pelo DevTools. Agora cole no SorteioPro.`);
      return;
    } catch (erroCopy) {
      const caixa = document.createElement('textarea');
      caixa.value = textoFinal;
      caixa.style.position = 'fixed';
      caixa.style.inset = '20px';
      caixa.style.zIndex = '999999';
      caixa.style.width = 'calc(100vw - 40px)';
      caixa.style.height = 'calc(100vh - 40px)';
      caixa.style.padding = '20px';
      caixa.style.fontSize = '16px';
      caixa.style.background = '#fff';
      caixa.style.color = '#111';
      document.body.appendChild(caixa);
      caixa.focus();
      caixa.select();
      console.log(`SorteioPro: ${linhas.length} comentarios encontrados. Copie o texto da caixa aberta na pagina com Ctrl+C e cole no SorteioPro.`);
    }
  }
})();
O alerta vermelho do Instagram e normal nessa etapa. Confira que voce esta usando o script do SorteioPro, digite allow pasting no Console para liberar a colagem e execute. O script tenta rolar e carregar mais comentarios, mas depende do que o Instagram disponibilizar na tela.