UNPKG

campeonato-brasileiro

Version:

Consulta tabela de jogos, tabela e rodadas do campeonato brasileiro

226 lines (196 loc) 8.31 kB
'use strict'; require('es6-promise').polyfill(); var request = require('request') var cheerio = require('cheerio'); function ConsultaJogo(ano, serie) { return new Promise(function(acept, error) { var url = '' if(serie == 'a') { url = 'https://especiais.tribunapr.com.br/futebol/tabela-brasileirao-serie-2019/' } else { url = 'https://especiais.tribunapr.com.br/futebol/tabela-brasileirao-serie-b-2019/' } var options = { url: url, headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36' } }; request(options, function(error, response, html) { if(!error) { var $ = cheerio.load(html); var lista = []; $('.rodada').each(function() { var item = $(this); var rodada = {} rodada.numero = item.attr('data-round'); rodada.jogos = item.html(); // console.log(item.attr('data-round')); if(item.attr('data-round')) lista.push(rodada); // console.log(item.html()); // console.log('##################################'); // produto.rodada = item.attr('data-round'); // var dateS = item.find('.game-date').text().split(' - '); // if(dateS.length > 0) { // produto.data = dateS[1]; // produto.horario = dateS[2]; // produto.dia = dateS[0]; // } else { // produto.data = ''; // produto.horario = ''; // produto.dia = ''; // } // produto.mandante = item.find('.game-club--principal').attr('title'); // produto.visitante = item.find('.game-club--visitor').attr('title'); // produto.mandantePlacar = item.find('div.game-scoreboard-values').children().first().text(); // produto.visitantePlacar = item.find('div.game-scoreboard-values').children().last().text(); // produto.estadio = item.find('.game-location').text(); // produto.cidade = item.find('.local').text(); // produto.transmisao = []; // item.find('.tv').children('i').each(function(i) { // var i = $(this); // switch (i.attr('class')) { // case 'icon-tv icon-tv-aberta': // produto.transmisao.push('Tv Aberta'); // break; // case 'icon-tv icon-tv-sportv': // produto.transmisao.push('SportTV'); // break; // case 'icon-tv icon-tv-pfc': // produto.transmisao.push('PFC'); // break; // case 'icon-tv icon-tv-indefinida': // produto.transmisao.push('Indefinida'); // break; // } // }); }); acept(lista); } else { error({ error:"Não foi possível retornar as informações!" }); } }); }); }; exports.jogos = function(ano, serie) { return new Promise(function(resolve, reject) { let lista = []; ConsultaJogo(ano, serie).then((value) => { var lista = []; value.map((item, i) => { var $ = cheerio.load(item.jogos); var jogo = {}; $('table').each(function() { var html = $(this); jogo.rodada = item.numero; jogo.mandante = html.find('tbody tr').find('td').first().next().find('meta').first().attr('content'); jogo.mandantePlacar = html.find('tbody tr').find('td').first().next().next().text(); jogo.visitante = html.find('tbody tr').find('td').first().next().next().next().next().next().find('meta').first().attr('content'); jogo.visitantePlacar = html.find('tbody tr').find('td').first().next().next().next().next().text(); jogo.estadio = html.find('.data-jogo').find('span').first().next().text(); var data = html.find('.data-jogo').find('span').first().text(); if(data){ var dados = data.replace('- ', '').split(' '); jogo.data = dados[1] jogo.hora = dados[2] jogo.dia = dados[0] } else { jogo.data = '' jogo.hora = '' jogo.dia = '' } jogo.cidade = ''; jogo.transmisao = []; if(jogo.mandante) lista.push(jogo); jogo = {} }) if(value.length == i +1) { resolve(lista) } }) // console.log(lista); }).catch((err) => { }) }); } exports.tabela = function(ano, serie) { return new Promise(function(acept, error) { var options = { url: 'http://www.tabeladobrasileirao.net/' + ano + '/serie-' + serie, headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36' } }; request(options, function(error, response, html) { if(!error) { var $ = cheerio.load(html); var lista = []; $('.container-table .simulator-table .table tbody tr').each(function() { var item = $(this); var jogo = {}; jogo.nome = item.find('.club-name--desktop').text().trim(); jogo.abreviacao = item.find('.club-name--mobile').text().trim(); jogo.pontos = parseInt(item.find('.points').text().trim()); jogo.jogos = parseInt(item.find('.played').text().trim()); jogo.vitorias = parseInt(item.find('.wins').text().trim()); jogo.empates = parseInt(item.find('.draws').text().trim()); jogo.derrotas = parseInt(item.find('.losses').text().trim()); jogo.golsPro = parseInt(item.find('.goals_for').text().trim()); jogo.golsContra = parseInt(item.find('.goals_against').text().trim()); jogo.saldoGols = parseInt(item.find('.goals_diff').text().trim()); jogo.aproveitamento = parseInt(item.find('.percent').text().trim()); lista.push(jogo); }); acept(lista); } else { error({ error:"Não foi possível retornar as informações!" }); } }); }); }; exports.rodadaAtual = function(ano, serie) { return new Promise(function(acept, error) { var options = { url: 'http://www.tabeladobrasileirao.net/' + ano + '/serie-' + serie, headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36' } }; request(options, function(error, response, html) { if(!error) { var $ = cheerio.load(html); var lista = []; // console.log($.html());; $('.container-table .simulator-games .table tbody tr').each(function() { var rodada = {}; var item = $(this); if(!item.attr('hidden')) { // console.log(item.attr('hidden')); rodada.rodada = item.attr('data-round'); var dateS = item.find('.game-date').text().split(' - '); if(dateS.length > 0) { rodada.data = dateS[1].trim(); rodada.horario = dateS[2].trim(); rodada.dia = dateS[0].trim(); } else { rodada.data = ''; rodada.horario = ''; rodada.dia = ''; } rodada.mandante = item.find('.game-club--principal').attr('title').trim(); rodada.placarMandante = item.find('div.game-scoreboard-values').children().first().text().trim(); rodada.visitante = item.find('.game-club--visitor').attr('title').trim(); rodada.placarVisitante = item.find('div.game-scoreboard-values').children().last().text().trim(); rodada.estadio = item.find('.game-location').text().trim(); if(!rodada.placarMandante) rodada.placarMandante = 0; if(!rodada.placarVisitante) rodada.placarVisitante = 0; lista.push(rodada); } }); acept(lista); } else { error({ error:"Não foi possível retornar as informações!" }); } }); }); };