Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- MANUAL DE INSTRUÇOES
- NÃO DAR PARA PEGAR TUDO DE UMA VEZ.. NAO TEM COMO
- ENTAO ENVIA COMO PARAMETRO QUAL SEQUENCIA DE CAMPEONATOS VAI PEGAR POR VEZ.
- POR EXEMPLO:
- > node testes.js 'Brasil'
- esse pega todos o do campo brasil, para pegar mais de um, envia assim:
- > node testes.js 'Brasil' 'Das Américas'
- Não solicitar mais de 2 por vez, de preferencia apenas um por vez. apenas 1
- possiveis pedidos:
- > node testes.js 'Brasil' 'Das Américas' 'Competições Internacionais de Clubes - Jogos' 'Inglaterra' 'Alemanha, Áustria e Suiça' 'Espanha' 'França' 'Itália' 'Rússia e Ucrânia' 'Polônia' 'Europa' 'Outros Países'
- */
- var Nightmare = require('nightmare')
- , cheerio = require('cheerio')
- , colors = require('colors')
- , mongoose = require('mongoose')
- , Schema = mongoose.Schema
- , ObjectId = mongoose.Schema.Types.ObjectId
- , db = mongoose.connection;
- mongoose.connect(
- // 'mongodb://198.199.120.249/bets',
- 'mongodb://localhost/bets',
- // 'mongodb://bets:d2t0i12linux@ds035876-a0.mlab.com:35876,ds035876-a1.mlab.com:35876/bets?replicaSet=rs-ds035876',
- function(err){
- if(err) {
- console.log("Error conectar mongo db: " + err);
- }
- });
- // Evento que veriricar error
- db.on('error', console.error.bind(console, 'Connection error:'));
- // Evento que verificar conexão está aberta.
- db.once('open', function() {
- console.log('Mongodb: Conexão realizada!');
- // Fechando a Conexão quando o processo cair
- process.on('SIGINT', function() {
- mongoose.connection.close(function () {
- console.log('Mongodb: Conexão fechada!');
- process.exit(0);
- });
- });
- var campeonatoEscolha = new Schema(
- {
- campeonato_nome: { type: String, required: true, uppercase: true },
- campeonato_id: { type: Number, required: true},
- jogos: [{
- origem: { type: String },
- status: { type: Boolean, default: true},
- titulo: { type: String, unique: false, uppercase: true},
- data_jogo: { type: String },
- data: { type: Date },
- jogo_id: { type: Number , unique: true},
- casa: { type: Number, default: null },
- fora: { type: Number, default: null },
- visitante: { type: Number, default: null },
- status_41: { type: Boolean, default: true },
- editar: {type: Boolean, default: false},
- regras:
- [
- {
- texto: { type: String, uppercase: true},
- valor: { type: Number, default: 1 },
- title: { type: String, uppercase: true},
- tipoodd: Number,
- acao: { type: String, uppercase: true}
- }
- ]
- }],
- resultados: [],
- created_at: { type: Date, default: Date.now },
- updated_at: { type: Date, default: Date.now }
- }
- );
- var Campeonatos = mongoose.model('Sportingbet', campeonatoEscolha);
- var interval_max = 100000;
- var interval_min = 5000;
- var gototimeout = 3000000;
- var min_odds = 100;
- //'Brasil',
- // 'Das Américas',
- // 'Competições Internacionais de Clubes - Jogos',
- // 'Inglaterra',
- // 'Alemanha, Áustria e Suiça',
- // 'Espanha',
- // 'França',
- // 'Itália',
- // 'Rússia e Ucrânia',
- // 'Polônia',
- // 'Europa',
- // 'Outros Países'
- var captar = [];
- for (var i = 2; i < (process.argv.length); i++) {
- console.log("Buscar por: ", process.argv[i]);
- captar.push(process.argv[i]);
- }
- var bet_url = 'https://br.sportingbet.com/esportes-futebol/0-102.html';
- var data_jogos,visitante,nome_jogos,casa,empate = [];
- var debug = true;
- var i = 0;
- console.log('Iniciando...'.bold);
- console.log('abrindo browser:' + bet_url);
- Nightmare({ show: debug, gotoTimeout: gototimeout }).goto(bet_url).end().evaluate(function(){ return document.getElementsByTagName("BODY")[0].innerHTML; })
- .then(function(result) {
- console.log('fechando browser' + bet_url);
- var $ = cheerio.load(result);
- console.log("Campeonatos achados");
- $('.box').each(function(index, el) {
- var campeonato = $(this).find('.dt').find('h2').text().trim();
- if(captar.indexOf(campeonato) != -1) {
- $(this).find('.dd').each(function(index, el) {
- var url = $(this).find('a').attr('href'),
- id_camp = $(this).find('a').attr('id'),
- camp_nome = $(this).find('a').text().trim(),
- id_camp = id_camp.replace(/[^0-9\.]+/g, ""),
- campeonato_id = id_camp;
- setTimeout(
- () => {
- console.log('abrindo browser ' + url);
- Nightmare({ show: debug, gotoTimeout: gototimeout }).goto(url).end().evaluate(function(){ return document.getElementsByTagName("BODY")[0].innerHTML; })
- .then(function(result2) {
- console.log('fechando browser ' + url);
- var j = cheerio.load(result2);
- j('.event.active').each(function(index, el){
- console.log("quantidade Odds: %s", j(this).find(".bets").text().trim());
- var str = j(this).find(".bets").text().trim();
- var total_odds = str.replace("+", "");
- total_odds = parseInt(total_odds);
- if(total_odds > min_odds) {
- var campeonatos = new Campeonatos();
- campeonatos.campeonato_nome = camp_nome.toUpperCase();
- campeonatos.campeonato_id = campeonato_id;
- console.log("%s - %s", camp_nome, campeonato_id);
- var jogos = [];
- var id_jogo = j(this).attr('id');
- var nome_jogo = j(this).find('.eventNameLink').text().trim();
- var val_data_jogo = j(this).find('.StartTime').text().trim();
- //var val_hora_jogo = j(this).find('.StartTime').text().trim();
- id_jogo = parseInt(id_jogo.replace(/[^0-9\.]+/g, ""));
- var jogo_data = val_data_jogo.match(/\b(\d+\/\d+\/\d+)\b/g);
- var hora_jogo = val_data_jogo.match(/(\d{2}:\d{2})/);
- var ano = new Date().getFullYear();
- var res = jogo_data[0].split("/");
- var dj = res[0]+''+res[1];
- var h = hora_jogo[0].split(":");
- var d2 = new Date(ano,res[1]-1,res[0],h[0],h[1],00,00);
- var regras = [];
- console.log("Jogo: %s URL: %s", j(this).find('.eventNameLink').attr().title,j(this).find('.eventNameLink').attr().href);
- var url_odds = j(this).find('.eventNameLink').attr().href;
- // setTimeout(
- // () => {
- //bets
- console.log("Abindo: %s", url_odds);
- Nightmare({ show: debug, gotoTimeout: gototimeout })
- .goto(url_odds).evaluate(function(){ return document.getElementsByTagName("BODY")[0].innerHTML; })
- .end()
- .then(function(result) {
- console.log("Fechando: %s", url_odds);
- var $ = cheerio.load(result);
- // VENCEDOR DO ENCONTRO
- var casa = parseFloat($(".mt_8034").find('.odds.home').find('.decValue').attr('value')) || 0;
- var empate = parseFloat($(".mt_8034").find('.odds.draw').find('.decValue').attr('value')) || 0;
- var visitante = parseFloat($(".mt_8034").find('.odds.away').find('.decValue').attr('value')) || 0;
- regras.push(
- {
- tipoodd:1,
- acao: 'COLUNA C1',
- valor: casa || 1
- },
- {
- tipoodd:2,
- acao: 'COLUNA CM',
- valor: empate || 1
- },
- {
- tipoodd:3,
- acao: 'COLUNA C2',
- valor: visitante || 1
- },
- {
- tipoodd:4,
- acao: 'FAVORITO -1',
- valor: (casa <= visitante) ? ((casa-1)*1.7)+1 : ((visitante-1)*1.7)+1
- },
- {
- tipoodd:5,
- acao: 'FAVORITO -1.5',
- valor: (casa <= visitante) ? ((casa-1)*3)+1 : ((visitante-1)*3)+1
- },
- {
- tipoodd:27,
- acao: 'FAVORITO -2',
- valor: (casa <= visitante) ? ((casa-1)*5)+1 : ((visitante-1)*5)+1
- },
- {
- tipoodd:6,
- acao: 'AZARÃO +1',
- valor: (casa >= visitante) ? ((casa-1)* 0.12)+1 : ((visitante-1)* 0.12)+1
- },{
- tipoodd:7,
- acao: 'AZARÃO +1.5',
- valor: (casa >= visitante) ? ((casa - 1) *0.05 ) +1 : ((visitante - 1) *0.05 ) +1
- },{
- tipoodd:61,
- acao: 'AZARÃO +2',
- valor: (casa >= visitante) ? ((casa-1)*0.02)+1 : ((visitante-1)*0.02)+1
- }
- );
- // console.log("VECEDOR DO ENCONTRO");
- // console.log("Casa: %s, Empate: %s, visitante: %s", casa,empate,visitante);
- var g_m_1,
- g_m_1_5,
- g_m_2_0,
- g_m_2_5,
- g_m_3_0,
- g_m_3_5,
- g_1,
- g_1_5,
- g_2_0,
- g_2_5,
- g_3_0,
- g_3_5;
- // GOLS DO JOGO
- console.log("GOLS DO JOGO");
- $(".mt_8035").find(".half").each(function(i,e){
- var texto = $(this).find('.description').text() || 0;
- var valor = $(this).find('.results').find('#isOffered').find('.decValue').attr('value') || 0;
- //console.log(" "+texto+" - " + valor);
- if(i == 2) { g_m_1_5 = parseFloat(valor); regras.push({tipoodd: 50, acao: 'GOLS DO JOGO +1.5',valor: parseFloat(valor) }); }
- if(i == 3) { g_1_5 = parseFloat(valor); regras.push({tipoodd: 51, acao: 'GOLS DO JOGO -1.5',valor: parseFloat(valor) }); }
- if(i == 4) { g_m_2_5 = parseFloat(valor); regras.push({tipoodd: 48, acao: 'GOLS DO JOGO +2.5',valor: parseFloat(valor) }); }
- if(i == 5) { g_2_5 = parseFloat(valor); regras.push({tipoodd: 49, acao: 'GOLS DO JOGO -2.5',valor: parseFloat(valor) }); }
- if(i == 6) { g_m_3_5 = parseFloat(valor); regras.push({tipoodd: 86, acao: 'GOLS DO JOGO +3.5',valor: parseFloat(valor) }); }
- if(i == 7) { g_3_5 = parseFloat(valor); regras.push({tipoodd: 53, acao: 'GOLS DO JOGO -3.5',valor: parseFloat(valor) }); }
- });
- // +1.0
- regras.push({tipoodd: 84, acao: 'GOLS DO JOGO +1.0', valor: parseFloat( ((g_m_1_5-1)/3)+1 ) });
- // +2.0
- regras.push({tipoodd: 85, acao: 'GOLS DO JOGO +2.0', valor: parseFloat( ((g_m_2_5-1)/2)+1 ) });
- // +3.0
- regras.push({tipoodd: 86, acao: 'GOLS DO JOGO +3.0', valor: parseFloat( ((g_m_3_5-1)/1.37)+1 ) });
- // -1.0
- regras.push({tipoodd: 87, acao: 'GOLS DO JOGO -1.0', valor: parseFloat( ((g_1_5-1)*3)+1 ) });
- // -2.0
- regras.push({tipoodd: 88, acao: 'GOLS DO JOGO -2.0', valor: parseFloat( ((g_1_5-g_2_5)/2)+g_2_5 ) });
- // -3.0
- regras.push({tipoodd: 89, acao: 'GOLS DO JOGO -3.0', valor: parseFloat( ((g_2_5-g_3_5)/3)+g_3_5 ) });
- // AMBAS MARCAM
- //console.log("AMBAS EQUIPEM MARCAM");
- $(".mt_7586").find(".m_event").each(function(i,e){
- var t = $(this).find('.description').text();
- var v = $(this).find('.decValue').attr('value') || 0;
- //console.log(" "+t+" - " + v);
- if(i == 0) { regras.push({tipoodd: 66, acao: 'GOLS 2TM',valor: parseFloat(v) }); }
- if(i == 1) { regras.push({tipoodd: 67, acao: 'GOLS 1TM',valor: parseFloat(v) }); }
- });
- // EMPATA NÃO TEM APOSTA
- //console.log("EMPATA NÃO TEM APSOTA");
- var e_casa = $(".mt_8071").find(".odds.home").find('.decValue').attr('value') || 0;
- var e_visitante = $(".mt_8071").find(".odds.away").find('.decValue').attr('value') || 0;
- //console.log("Casa: %s, visitante: %s", e_casa,e_visitante);
- regras.push({tipoodd: 10, acao: 'CM EMPATA C1', valor: parseFloat(e_casa) });
- regras.push({tipoodd: 11, acao: 'CM EMPATA C2', valor: parseFloat(e_visitante) });
- // PLACAR FINAL
- console.log("PLACAR EXATO");
- $(".mt_8065").find(".columns").each(function(i,e){
- $(this).find(".m_event").each(function(ii,ee){
- var t = $(this).find('.description').text();
- var v = $(this).find('.decValue').attr('value') || 0;
- console.log(" "+t+" - " + v);
- if( i==1 && ii == 0 ) { regras.push({tipoodd: 12, acao: 'PLACAR EXATO 0x0',valor: parseFloat(v) }); }
- if( i==1 && ii == 1 ) { regras.push({tipoodd: 13, acao: 'PLACAR EXATO 1x1',valor: parseFloat(v) }); }
- if( i==1 && ii == 2 ) { regras.push({tipoodd: 14, acao: 'PLACAR EXATO 2x2',valor: parseFloat(v) }); }
- if( i==0 && ii == 0 ) { regras.push({tipoodd: 15, acao: 'PLACAR EXATO 1x0',valor: parseFloat(v) }); }
- if( i==0 && ii == 1 ) { regras.push({tipoodd: 17, acao: 'PLACAR EXATO 2x0',valor: parseFloat(v) }); }
- if( i==0 && ii == 2 ) { regras.push({tipoodd: 19, acao: 'PLACAR EXATO 2x1',valor: parseFloat(v) }); }
- if( i==0 && ii == 3 ) { regras.push({tipoodd: 21, acao: 'PLACAR EXATO 3x0',valor: parseFloat(v) }); }
- if( i==0 && ii == 4 ) { regras.push({tipoodd: 23, acao: 'PLACAR EXATO 3x1',valor: parseFloat(v) }); }
- if( i==0 && ii == 5 ) { regras.push({tipoodd: 25, acao: 'PLACAR EXATO 3x2',valor: parseFloat(v) }); }
- if( i==2 && ii == 0 ) { regras.push({tipoodd: 16, acao: 'PLACAR EXATO 0x1',valor: parseFloat(v) }); }
- if( i==2 && ii == 1 ) { regras.push({tipoodd: 18, acao: 'PLACAR EXATO 0x2',valor: parseFloat(v) }); }
- if( i==2 && ii == 2 ) { regras.push({tipoodd: 20, acao: 'PLACAR EXATO 1x2',valor: parseFloat(v) }); }
- if( i==2 && ii == 3 ) { regras.push({tipoodd: 22, acao: 'PLACAR EXATO 0x3',valor: parseFloat(v) }); }
- if( i==2 && ii == 4 ) { regras.push({tipoodd: 24, acao: 'PLACAR EXATO 1x3',valor: parseFloat(v) }); }
- if( i==2 && ii == 5 ) { regras.push({tipoodd: 26, acao: 'PLACAR EXATO 2x3',valor: parseFloat(v) }); }
- });
- });
- // DUPLA POSSIBILIDADE
- //console.log("DUPLA POSSIBILIDADE");
- var nao_perde_C1 = (((casa-1)*0.18)+1).toFixed(2);
- var nao_perde_C2 = (((visitante-1)*0.18)+1).toFixed(2);
- //console.log("Nao perde C1: %s, Nao perde C2: %s", nao_perde_C1, nao_perde_C2);
- regras.push({tipoodd: 8,acao: 'NÃO PERDE C1',valor: parseFloat(nao_perde_C1)});
- regras.push({tipoodd: 9,acao: 'NÃO PERDE C2',valor: parseFloat(nao_perde_C2)});
- // GOLS PAR OU IMPAR
- console.log("GOLS PAR OU IMPAR");
- $(".mt_8055").find(".m_event").each(function(i,e){
- var t = $(this).find('.description').text();
- var v = parseFloat($(this).find('.decValue').attr('value')) || 0;
- console.log(" "+t+" - " + v);
- if(i == 0) { regras.push({tipoodd: 65,acao: 'GOLS IMPAR',valor: v}); }
- if(i == 1) { regras.push({tipoodd: 64,acao: 'GOLS PAR',valor: v}); }
- });
- console.log(regras);
- var _query = {$and: [{campeonato_id: campeonato_id},{'jogos.jogo_id': id_jogo}]};
- campeonatos.jogos.push({
- titulo: nome_jogo.toUpperCase(),
- jogo_id: id_jogo,
- data_jogo:dj,
- data: d2,
- origem: 'sportingbet',
- regras:regras
- });
- console.log(campeonatos);
- Campeonatos.findOne(_query, function(err,c){
- console.log('findone');
- if(c){
- console.log('achomes esse registro, apenas atualiza');
- Campeonatos.update({campeonato_id: campeonato_id} , {$push: {'jogos': campeonatos.jogos }}, function(err,m){
- if(err) {
- console.log('Erro no update');
- console.log(err);
- } else {
- console.log('Sucesso no update');
- }
- })
- } else {
- campeonatos.save(function(err,camp){
- if(err) {
- console.log('erro ao savar');
- console.log(err);}
- else {
- console.log('Inserido com sucesso'.blue);
- console.log("Campeonato: %s - %s ", camp.campeonato_nome, camp.campeonato_id);
- }
- });
- }
- })
- })
- .catch(function (error) { console.error('ERROR: ', error); })
- //}, Math.floor(Math.random() * (interval_max - interval_min + 1)) + interval_min)
- }
- });
- })
- .catch(function (error) { console.error('ERROR: ', error); });
- }, Math.floor(Math.random() * (interval_max - interval_min + 1)) + interval_min)
- i++;
- });
- }
- });
- })
- .catch(function (error) { console.error('ERROR: ', error); });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement