Advertisement
rogerin

Untitled

Feb 13th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  
  3.  
  4.  
  5.   MANUAL DE INSTRUÇOES
  6.  
  7.   NÃO DAR PARA PEGAR TUDO DE UMA VEZ.. NAO TEM COMO
  8.   ENTAO ENVIA COMO PARAMETRO QUAL SEQUENCIA DE CAMPEONATOS VAI PEGAR POR VEZ.
  9.   POR EXEMPLO:
  10.  
  11.   > node testes.js 'Brasil'
  12.  
  13.   esse pega todos o do campo brasil, para pegar mais de um, envia assim:
  14.  
  15.   > node testes.js 'Brasil' 'Das Américas'
  16.  
  17.   Não solicitar mais de 2 por vez, de preferencia apenas um por vez. apenas 1
  18.  
  19.   possiveis pedidos:
  20.  
  21.   > 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'
  22.  
  23.  
  24.   */
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31. var Nightmare = require('nightmare')
  32. ,   cheerio = require('cheerio')
  33. ,   colors  = require('colors')
  34. ,   mongoose = require('mongoose')
  35. ,     Schema = mongoose.Schema
  36. ,   ObjectId = mongoose.Schema.Types.ObjectId
  37. ,   db = mongoose.connection;
  38.  
  39.  
  40.  
  41.  
  42.      mongoose.connect(
  43.         // 'mongodb://198.199.120.249/bets',
  44.          'mongodb://localhost/bets',
  45.     //            'mongodb://bets:d2t0i12linux@ds035876-a0.mlab.com:35876,ds035876-a1.mlab.com:35876/bets?replicaSet=rs-ds035876',
  46.                  function(err){
  47.                 if(err) {
  48.                         console.log("Error conectar mongo db: " + err);
  49.                 }
  50.         });
  51.  
  52.  
  53.     // Evento que veriricar error
  54.     db.on('error', console.error.bind(console, 'Connection error:'));
  55.  
  56.     // Evento que verificar conexão está aberta.
  57.     db.once('open', function() {
  58.         console.log('Mongodb: Conexão realizada!');
  59.  
  60.  
  61.     // Fechando a Conexão quando o processo cair
  62.     process.on('SIGINT', function() {
  63.         mongoose.connection.close(function () {
  64.             console.log('Mongodb: Conexão fechada!');
  65.             process.exit(0);
  66.         });
  67.     });
  68.  
  69.  
  70.   var campeonatoEscolha = new Schema(
  71.   {
  72.     campeonato_nome: { type: String, required: true, uppercase: true },
  73.     campeonato_id:   { type: Number, required: true},
  74.         jogos: [{
  75.         origem:     { type: String },
  76.         status:     { type: Boolean, default: true},
  77.         titulo:     { type: String, unique: false, uppercase: true},
  78.         data_jogo:  { type: String },
  79.         data:       { type: Date },
  80.         jogo_id:    { type: Number , unique: true},
  81.         casa:       { type: Number, default: null },
  82.         fora:       { type: Number, default: null },
  83.         visitante:  { type: Number, default: null },
  84.         status_41:  { type: Boolean, default: true },
  85.         editar:     {type: Boolean, default: false},
  86.         regras:
  87.             [
  88.               {
  89.                 texto: { type: String, uppercase: true},
  90.                 valor: { type: Number, default: 1 },
  91.                 title: { type: String, uppercase: true},
  92.                 tipoodd: Number,
  93.                 acao: { type: String, uppercase: true}
  94.               }
  95.             ]
  96.           }],
  97.     resultados: [],
  98.     created_at: { type: Date, default: Date.now },
  99.     updated_at: { type: Date, default: Date.now }
  100.   }
  101. );
  102.  
  103.  
  104. var Campeonatos = mongoose.model('Sportingbet', campeonatoEscolha);
  105.  
  106.  
  107.   var interval_max  = 100000;
  108.   var interval_min  = 5000;
  109.   var gototimeout   = 3000000;
  110.   var min_odds      = 100;
  111.  
  112.  
  113.  
  114.     //'Brasil',
  115.   // 'Das Américas',
  116.   // 'Competições Internacionais de Clubes - Jogos',
  117.   // 'Inglaterra',
  118.   // 'Alemanha, Áustria e Suiça',
  119.   // 'Espanha',
  120.   // 'França',
  121.   // 'Itália',
  122.   // 'Rússia e Ucrânia',
  123.   // 'Polônia',
  124.   // 'Europa',
  125.   // 'Outros Países'
  126.   var captar = [];
  127.  
  128.     for (var i = 2; i < (process.argv.length); i++) {
  129.             console.log("Buscar por: ", process.argv[i]);
  130.       captar.push(process.argv[i]);
  131.     }
  132.  
  133.     var bet_url = 'https://br.sportingbet.com/esportes-futebol/0-102.html';
  134.     var data_jogos,visitante,nome_jogos,casa,empate = [];
  135.     var debug = true;
  136.  
  137.     var i = 0;
  138.     console.log('Iniciando...'.bold);
  139.     console.log('abrindo browser:' + bet_url);
  140.  
  141.         Nightmare({ show: debug,  gotoTimeout: gototimeout }).goto(bet_url).end().evaluate(function(){ return document.getElementsByTagName("BODY")[0].innerHTML; })
  142.          .then(function(result) {
  143.              console.log('fechando browser' + bet_url);
  144.              var $ = cheerio.load(result);
  145.                          console.log("Campeonatos achados");
  146.  
  147.              $('.box').each(function(index, el) {
  148.                var campeonato = $(this).find('.dt').find('h2').text().trim();
  149.  
  150.  
  151.                if(captar.indexOf(campeonato) != -1) {
  152.  
  153.                  $(this).find('.dd').each(function(index, el) {
  154.                    var url = $(this).find('a').attr('href'),
  155.                        id_camp = $(this).find('a').attr('id'),
  156.                        camp_nome = $(this).find('a').text().trim(),
  157.                        id_camp = id_camp.replace(/[^0-9\.]+/g, ""),
  158.                        campeonato_id = id_camp;
  159.  
  160.                    setTimeout(
  161.                      () => {
  162.                        console.log('abrindo browser ' + url);
  163.                        Nightmare({ show: debug,  gotoTimeout: gototimeout }).goto(url).end().evaluate(function(){ return document.getElementsByTagName("BODY")[0].innerHTML; })
  164.                         .then(function(result2) {
  165.                           console.log('fechando browser ' + url);
  166.                           var j = cheerio.load(result2);
  167.  
  168.                           j('.event.active').each(function(index, el){
  169.  
  170.                             console.log("quantidade Odds: %s", j(this).find(".bets").text().trim());
  171.  
  172.  
  173.  
  174.                             var str = j(this).find(".bets").text().trim();
  175.                             var total_odds = str.replace("+", "");
  176.                             total_odds = parseInt(total_odds);
  177.  
  178.                             if(total_odds > min_odds) {
  179.  
  180.                               var campeonatos = new Campeonatos();
  181.                               campeonatos.campeonato_nome = camp_nome.toUpperCase();
  182.                               campeonatos.campeonato_id = campeonato_id;
  183.  
  184.                               console.log("%s - %s", camp_nome, campeonato_id);
  185.  
  186.                               var jogos = [];
  187.  
  188.                               var id_jogo = j(this).attr('id');
  189.                               var nome_jogo = j(this).find('.eventNameLink').text().trim();
  190.                               var val_data_jogo = j(this).find('.StartTime').text().trim();
  191.                               //var val_hora_jogo = j(this).find('.StartTime').text().trim();
  192.  
  193.                               id_jogo = parseInt(id_jogo.replace(/[^0-9\.]+/g, ""));
  194.                               var jogo_data = val_data_jogo.match(/\b(\d+\/\d+\/\d+)\b/g);
  195.                               var hora_jogo = val_data_jogo.match(/(\d{2}:\d{2})/);
  196.  
  197.                               var ano       = new Date().getFullYear();
  198.                               var res   = jogo_data[0].split("/");
  199.                               var dj    = res[0]+''+res[1];
  200.                               var h = hora_jogo[0].split(":");
  201.                               var d2  = new Date(ano,res[1]-1,res[0],h[0],h[1],00,00);
  202.  
  203.                               var regras = [];
  204.  
  205.  
  206.                               console.log("Jogo: %s URL: %s", j(this).find('.eventNameLink').attr().title,j(this).find('.eventNameLink').attr().href);
  207.                               var url_odds = j(this).find('.eventNameLink').attr().href;
  208.  
  209.                               // setTimeout(
  210.                               //    () => {
  211.                                   //bets
  212.                                     console.log("Abindo: %s", url_odds);
  213.                                     Nightmare({ show: debug,  gotoTimeout: gototimeout })
  214.                                       .goto(url_odds).evaluate(function(){ return document.getElementsByTagName("BODY")[0].innerHTML; })
  215.                                       .end()
  216.                                       .then(function(result) {
  217.                                         console.log("Fechando: %s", url_odds);
  218.                                         var $ = cheerio.load(result);
  219.  
  220.                                          // VENCEDOR DO ENCONTRO
  221.                                         var casa      = parseFloat($(".mt_8034").find('.odds.home').find('.decValue').attr('value')) || 0;
  222.                                         var empate    = parseFloat($(".mt_8034").find('.odds.draw').find('.decValue').attr('value')) || 0;
  223.                                         var visitante = parseFloat($(".mt_8034").find('.odds.away').find('.decValue').attr('value')) || 0;
  224.  
  225.  
  226.                                         regras.push(
  227.                                           {
  228.                                             tipoodd:1,
  229.                                             acao: 'COLUNA C1',
  230.                                             valor: casa || 1
  231.                                           },
  232.                                           {
  233.                                             tipoodd:2,
  234.                                             acao: 'COLUNA CM',
  235.                                             valor: empate || 1
  236.                                           },
  237.                                                                                     {
  238.                                             tipoodd:3,
  239.                                             acao: 'COLUNA C2',
  240.                                             valor: visitante || 1
  241.                                           },
  242.                                                                                     {
  243.                                                 tipoodd:4,
  244.                                                 acao: 'FAVORITO -1',
  245.                                                 valor: (casa <= visitante) ?  ((casa-1)*1.7)+1 :  ((visitante-1)*1.7)+1
  246.                                           },
  247.                                                                                     {
  248.                                                 tipoodd:5,
  249.                                                 acao: 'FAVORITO -1.5',
  250.                                                 valor:  (casa <= visitante) ? ((casa-1)*3)+1 : ((visitante-1)*3)+1
  251.                                           },
  252.                                                                                     {
  253.                                                 tipoodd:27,
  254.                                                 acao: 'FAVORITO -2',
  255.                                                 valor: (casa <= visitante) ? ((casa-1)*5)+1 :  ((visitante-1)*5)+1
  256.                                           },
  257.  
  258.                                                                                     {
  259.                                                 tipoodd:6,
  260.                                                 acao: 'AZARÃO +1',
  261.                                                 valor:  (casa >= visitante) ? ((casa-1)* 0.12)+1 : ((visitante-1)* 0.12)+1
  262.                                           },{
  263.                                                 tipoodd:7,
  264.                                                 acao: 'AZARÃO +1.5',
  265.                                                 valor: (casa >= visitante) ? ((casa - 1) *0.05 ) +1 : ((visitante - 1) *0.05 ) +1
  266.                                           },{
  267.                                                 tipoodd:61,
  268.                                                 acao: 'AZARÃO +2',
  269.                                                 valor: (casa >= visitante) ? ((casa-1)*0.02)+1 : ((visitante-1)*0.02)+1
  270.                                           }
  271.  
  272.                                         );
  273.  
  274.  
  275.  
  276.                                         // console.log("VECEDOR DO ENCONTRO");
  277.                                         // console.log("Casa: %s, Empate: %s, visitante: %s", casa,empate,visitante);
  278.  
  279.                                     var g_m_1,
  280.                                       g_m_1_5,
  281.                                       g_m_2_0,
  282.                                       g_m_2_5,
  283.                                       g_m_3_0,
  284.                                       g_m_3_5,
  285.                                       g_1,
  286.                                       g_1_5,
  287.                                       g_2_0,
  288.                                       g_2_5,
  289.                                       g_3_0,
  290.                                       g_3_5;
  291.  
  292.  
  293.                                         // GOLS DO JOGO
  294.                                         console.log("GOLS DO JOGO");
  295.                                         $(".mt_8035").find(".half").each(function(i,e){
  296.                                           var texto = $(this).find('.description').text() || 0;
  297.                                           var valor = $(this).find('.results').find('#isOffered').find('.decValue').attr('value') || 0;
  298.                                           //console.log(" "+texto+" - " + valor);
  299.  
  300.                                           if(i == 2) { g_m_1_5 = parseFloat(valor); regras.push({tipoodd: 50, acao: 'GOLS DO JOGO +1.5',valor: parseFloat(valor) }); }
  301.                                           if(i == 3) { g_1_5   = parseFloat(valor); regras.push({tipoodd: 51, acao: 'GOLS DO JOGO -1.5',valor: parseFloat(valor) }); }
  302.                                           if(i == 4) { g_m_2_5 = parseFloat(valor); regras.push({tipoodd: 48, acao: 'GOLS DO JOGO +2.5',valor: parseFloat(valor) }); }
  303.                                           if(i == 5) { g_2_5   = parseFloat(valor); regras.push({tipoodd: 49, acao: 'GOLS DO JOGO -2.5',valor: parseFloat(valor) }); }
  304.                                           if(i == 6) { g_m_3_5 = parseFloat(valor); regras.push({tipoodd: 86, acao: 'GOLS DO JOGO +3.5',valor: parseFloat(valor) }); }
  305.                                           if(i == 7) { g_3_5   = parseFloat(valor); regras.push({tipoodd: 53, acao: 'GOLS DO JOGO -3.5',valor: parseFloat(valor) }); }
  306.                                         });
  307.                                         // +1.0
  308.                                         regras.push({tipoodd: 84, acao: 'GOLS DO JOGO +1.0', valor: parseFloat( ((g_m_1_5-1)/3)+1 ) });
  309.                                         // +2.0
  310.                                         regras.push({tipoodd: 85, acao: 'GOLS DO JOGO +2.0', valor: parseFloat( ((g_m_2_5-1)/2)+1 ) });
  311.                                         // +3.0
  312.                                         regras.push({tipoodd: 86, acao: 'GOLS DO JOGO +3.0', valor: parseFloat( ((g_m_3_5-1)/1.37)+1 ) });
  313.                                         // -1.0
  314.                                         regras.push({tipoodd: 87, acao: 'GOLS DO JOGO -1.0', valor: parseFloat( ((g_1_5-1)*3)+1 ) });
  315.                                         // -2.0
  316.                                         regras.push({tipoodd: 88, acao: 'GOLS DO JOGO -2.0', valor: parseFloat( ((g_1_5-g_2_5)/2)+g_2_5 ) });
  317.                                         // -3.0
  318.                                         regras.push({tipoodd: 89, acao: 'GOLS DO JOGO -3.0', valor: parseFloat( ((g_2_5-g_3_5)/3)+g_3_5 ) });
  319.  
  320.  
  321.  
  322.                                         // AMBAS MARCAM
  323.                                         //console.log("AMBAS EQUIPEM MARCAM");
  324.                                         $(".mt_7586").find(".m_event").each(function(i,e){
  325.                                           var t = $(this).find('.description').text();
  326.                                           var v = $(this).find('.decValue').attr('value') || 0;
  327.  
  328.                                           //console.log(" "+t+" - " + v);
  329.                                           if(i == 0) { regras.push({tipoodd: 66, acao: 'GOLS 2TM',valor: parseFloat(v) }); }
  330.                                           if(i == 1) { regras.push({tipoodd: 67, acao: 'GOLS 1TM',valor: parseFloat(v) }); }
  331.  
  332.                                         });
  333.  
  334.                                         // EMPATA NÃO TEM APOSTA
  335.                                         //console.log("EMPATA NÃO TEM APSOTA");
  336.                                         var e_casa      = $(".mt_8071").find(".odds.home").find('.decValue').attr('value') || 0;
  337.                                         var e_visitante = $(".mt_8071").find(".odds.away").find('.decValue').attr('value') || 0;
  338.                                         //console.log("Casa: %s, visitante: %s", e_casa,e_visitante);
  339.  
  340.                                         regras.push({tipoodd: 10, acao: 'CM EMPATA C1', valor: parseFloat(e_casa) });
  341.                                         regras.push({tipoodd: 11, acao: 'CM EMPATA C2', valor: parseFloat(e_visitante) });
  342.  
  343.  
  344.                                         // PLACAR FINAL
  345.                                         console.log("PLACAR EXATO");
  346.                                         $(".mt_8065").find(".columns").each(function(i,e){
  347.                                           $(this).find(".m_event").each(function(ii,ee){
  348.                                             var t = $(this).find('.description').text();
  349.                                             var v = $(this).find('.decValue').attr('value') || 0;
  350.                                             console.log(" "+t+" - " + v);
  351.                                             if( i==1 && ii == 0 )  { regras.push({tipoodd: 12, acao: 'PLACAR EXATO 0x0',valor: parseFloat(v) }); }
  352.                                             if( i==1 && ii == 1 )  { regras.push({tipoodd: 13, acao: 'PLACAR EXATO 1x1',valor: parseFloat(v) }); }
  353.                                             if( i==1 && ii == 2 )  { regras.push({tipoodd: 14, acao: 'PLACAR EXATO 2x2',valor: parseFloat(v) }); }
  354.                                             if( i==0 && ii == 0 )  { regras.push({tipoodd: 15, acao: 'PLACAR EXATO 1x0',valor: parseFloat(v) }); }
  355.                                             if( i==0 && ii == 1 )  { regras.push({tipoodd: 17, acao: 'PLACAR EXATO 2x0',valor: parseFloat(v) }); }
  356.                                             if( i==0 && ii == 2 )  { regras.push({tipoodd: 19, acao: 'PLACAR EXATO 2x1',valor: parseFloat(v) }); }
  357.                                             if( i==0 && ii == 3 )  { regras.push({tipoodd: 21, acao: 'PLACAR EXATO 3x0',valor: parseFloat(v) }); }
  358.                                             if( i==0 && ii == 4 )  { regras.push({tipoodd: 23, acao: 'PLACAR EXATO 3x1',valor: parseFloat(v) }); }
  359.                                             if( i==0 && ii == 5 )  { regras.push({tipoodd: 25, acao: 'PLACAR EXATO 3x2',valor: parseFloat(v) }); }
  360.                                             if( i==2 && ii == 0 )   { regras.push({tipoodd: 16, acao: 'PLACAR EXATO 0x1',valor: parseFloat(v) }); }
  361.                                             if( i==2 && ii == 1 )  { regras.push({tipoodd: 18, acao: 'PLACAR EXATO 0x2',valor: parseFloat(v) }); }
  362.                                             if( i==2 && ii == 2 )  { regras.push({tipoodd: 20, acao: 'PLACAR EXATO 1x2',valor: parseFloat(v) }); }
  363.                                             if( i==2 && ii == 3 )  { regras.push({tipoodd: 22, acao: 'PLACAR EXATO 0x3',valor: parseFloat(v) }); }
  364.                                             if( i==2 && ii == 4 )  { regras.push({tipoodd: 24, acao: 'PLACAR EXATO 1x3',valor: parseFloat(v) }); }
  365.                                             if( i==2 && ii == 5 )  { regras.push({tipoodd: 26, acao: 'PLACAR EXATO 2x3',valor: parseFloat(v) }); }
  366.  
  367.                                           });
  368.                                         });
  369.  
  370.                                         // DUPLA POSSIBILIDADE
  371.                                         //console.log("DUPLA POSSIBILIDADE");
  372.                                         var nao_perde_C1 = (((casa-1)*0.18)+1).toFixed(2);
  373.                                         var nao_perde_C2 = (((visitante-1)*0.18)+1).toFixed(2);
  374.                                         //console.log("Nao perde C1: %s, Nao perde C2: %s", nao_perde_C1, nao_perde_C2);
  375.  
  376.                                         regras.push({tipoodd: 8,acao: 'NÃO PERDE C1',valor: parseFloat(nao_perde_C1)});
  377.                                         regras.push({tipoodd: 9,acao: 'NÃO PERDE C2',valor: parseFloat(nao_perde_C2)});
  378.  
  379.  
  380.  
  381.                                         // GOLS PAR OU IMPAR
  382.                                         console.log("GOLS PAR OU IMPAR");
  383.                                         $(".mt_8055").find(".m_event").each(function(i,e){
  384.  
  385.                                           var t = $(this).find('.description').text();
  386.                                           var v = parseFloat($(this).find('.decValue').attr('value')) || 0;
  387.                                           console.log(" "+t+" - " + v);
  388.  
  389.                                           if(i == 0) { regras.push({tipoodd: 65,acao: 'GOLS IMPAR',valor: v}); }
  390.                                           if(i == 1) { regras.push({tipoodd: 64,acao: 'GOLS PAR',valor: v}); }
  391.  
  392.                                         });
  393.  
  394.                                         console.log(regras);
  395.  
  396.  
  397.                                         var _query = {$and: [{campeonato_id: campeonato_id},{'jogos.jogo_id': id_jogo}]};
  398.  
  399.                                           campeonatos.jogos.push({
  400.                                             titulo: nome_jogo.toUpperCase(),
  401.                                             jogo_id: id_jogo,
  402.                                             data_jogo:dj,
  403.                                             data: d2,
  404.                                             origem: 'sportingbet',
  405.                                             regras:regras
  406.                                           });
  407.  
  408.                                                                                     console.log(campeonatos);
  409.  
  410.  
  411.  
  412.                                           Campeonatos.findOne(_query, function(err,c){
  413.  
  414.                                                                                         console.log('findone');
  415.  
  416.                                             if(c){
  417.                                                                                             console.log('achomes esse registro, apenas atualiza');
  418.                                               Campeonatos.update({campeonato_id: campeonato_id} , {$push: {'jogos': campeonatos.jogos }}, function(err,m){
  419.                                                 if(err) {
  420.                                                   console.log('Erro no update');
  421.                                                   console.log(err);
  422.                                                 } else {
  423.                                                   console.log('Sucesso no update');
  424.                                                 }
  425.                                               })
  426.                                             } else {
  427.                                               campeonatos.save(function(err,camp){
  428.                                                 if(err) {
  429.                                                   console.log('erro ao savar');
  430.                                                   console.log(err);}
  431.                                                 else {
  432.                                                   console.log('Inserido com sucesso'.blue);
  433.                                                   console.log("Campeonato: %s - %s ", camp.campeonato_nome, camp.campeonato_id);
  434.                                                 }
  435.                                               });
  436.                                             }
  437.                                           })
  438.                                      })
  439.                                      .catch(function (error) { console.error('ERROR: ', error); })
  440.                                 //}, Math.floor(Math.random() * (interval_max - interval_min + 1)) + interval_min)
  441.  
  442.                               }
  443.  
  444.                           });
  445.  
  446.                         })
  447.                         .catch(function (error) { console.error('ERROR: ', error); });
  448.                       }, Math.floor(Math.random() * (interval_max - interval_min + 1)) + interval_min)
  449.  
  450.                    i++;
  451.                  });
  452.  
  453.               }
  454.  
  455.            });
  456.  
  457.          })
  458.          .catch(function (error) { console.error('ERROR: ', error); });
  459.  
  460.  
  461.     });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement