Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Criei um script para saber qual é o primeiro do Ranking ALURA =)

Bom, aplicando os conhecimentos que adquiri no curso de JavaScript + jQuery + ES6, criei um simples script usando AJAX para descobrir o primeiro do ranking. (TINHA ESSA CURIOSIDADE) Você pode rodar ele no console do seu navegador =D

let typeRanking = 'full'; // monthly or full
function getLoop(url) {
    $.get(url, function(data) {
        let html = $.parseHTML(data);
        let jHtml = $(html);
        let objNumber = jHtml.find('.rankPage-list strong.rankPage-position-number')[0];
        let ranking = $(objNumber).text();
        console.log(ranking);
        let objFirst = jHtml.find('.rankPage-list a.rankPage-position-user')[0];
        let userLink = $(objFirst).attr('href');
        let linkArray = userLink.split('/');
        let username = linkArray[linkArray.length - 1];
        let url = `https://cursos.alura.com.br/user/${username}/rank/` + typeRanking;
        if (ranking != '#1') {
            console.log(url);
            getLoop(url);
        } else {
            window.location.replace(url);
        }
    });
}
getLoop('https://cursos.alura.com.br/user/maksuel/rank/' + typeRanking);

Dependências: jQuery

5 respostas

Hehe... Massa, Maksuel Boni!

solução!

Eu não sou muito chegado a usar jQuery para coisas que podem ser feitas com JavaScript puro. Para engrandecer o post, segue o mesmo código escrito em JavaScript puro. Mantive sua lógica, para prestigiá-lo:

var typeRanking = 'full'; // monthly or full

function getLoop(url) {

        fetch(url)
            .then(res => res.text())
            .then(text => {
                // pulo do gato esta aqui!
                let fragment = document.createElement('div');
                fragment.innerHTML = text;
                return fragment;
            })
            .then(fragment => {

                let ranking = fragment
                    .querySelector('.rankPage-list strong.rankPage-position-number')
                    .textContent;

                let username = fragment
                    .querySelector('.rankPage-list a.rankPage-position-user')
                    .href.split('/').pop();

                let url = `https://cursos.alura.com.br/user/${username}/rank/` + typeRanking;
                ranking != '#1' ? getLoop(url) :  window.location.replace(url)
        });
}

getLoop('https://cursos.alura.com.br/user/flavio-almeida/rank/' + typeRanking);

Dependências: nenhuma! :)

Pegou o truque Boni? O pulo do gato esta em converter a resposta de texto para um elemento do DOM que não pertence a árvore de elementos e a partir dele realizar as buscas com querySelector.

Boni, você é um forte candidato para ser meu aluno nos cursos de JavaScript avançados da Alura! Te encontro lá! :)

Flavio, sakei!!! Li a documentação do 'fetch' =D

Estou estudando toda a grade do JavaScript. Abração

Você aprende fetch comigo no terceiro curso avançado de js!

Abraço Boni!