public static ReservasModel GetModelFromBCRA()
        {
            var postParameters = new Dictionary <string, object>();

            postParameters.Add("desde", DateTime.UtcNow.AddDays(-50).ToString("dd/MM/yyyy"));
            postParameters.Add("hasta", DateTime.UtcNow.AddDays(5).ToString("dd/MM/yyyy"));
            postParameters.Add("fecha", "Fecha_Serie");
            postParameters.Add("descri", "1");
            postParameters.Add("campo", "Res_Int_BCRA");

            var html = new Scraper(new Uri("http://www.bcra.gov.ar/estadis/es010100.asp"), Encoding.ASCII, "http://www.bcra.gov.ar/estadis/es010100.asp?descri=1&fecha=Fecha_Serie&campo=Res_Int_BCRA").GetNodes(HttpMethod.Post, postParameters);

            var table = html.CssSelect("table").First();

            var filas = table.CssSelect("tr").Skip(1).Take(10);

            var lista = new List <ReservasItem>();

            foreach (var htmlNode in filas)
            {
                var tds = htmlNode.CssSelect("td").ToList();

                var fi = tds[0].InnerText.Split('/');

                var fecha = new DateTime(int.Parse(fi[2]), int.Parse(fi[1]), int.Parse(fi[0]));
                var monto = int.Parse(tds[1].InnerText);

                lista.Add(new ReservasItem {
                    Fecha = fecha, Monto = monto,
                });
            }

            return(new ReservasModel
            {
                Actualizacion = DateTime.UtcNow,
                Lista = lista,
            });
        }
        public static DivisaModel GetRofexModel()
        {
            var divisas = new List <DivisaViewModel>();

            HtmlNode html = new Scraper(new Uri("http://www.rofex.com.ar/"), Encoding.UTF7).GetNodes();

            var cierre = html.CssSelect("#cierre_monedas");
            var tabla  = cierre.CssSelect("table tr").Skip(1);

            foreach (var htmlNode in tabla)
            {
                var tds = htmlNode.CssSelect("td").ToArray();

                var nombre    = tds[0];
                var compra    = tds[1];
                var venta     = tds[1];
                var variacion = tds[3];

                divisas.Add(new DivisaViewModel
                {
                    Nombre      = nombre.InnerText,
                    Simbolo     = "U$S",
                    ValorCompra = compra.InnerText.Remove(compra.InnerText.Length - 1),
                    ValorVenta  = venta.InnerText.Remove(venta.InnerText.Length - 1),
                    Variacion   = variacion.InnerText,
                });
            }

            var result = new DivisaModel
            {
                Actualizacion = DateTime.Now,
                Divisas       = divisas,
            };

            return(result);
        }
        public static DivisaModel GetTasasModel()
        {
            var divisas = new List <DivisaViewModel>();

            HtmlNode html = new Scraper(new Uri("http://www.ambito.com/economia/mercados/tasas/"), Encoding.UTF7).GetNodes();

            string ultimo;
            string cierreAnterior;
            string variacion;

            try
            {
                ultimo         = html.CssSelect("div.columna1 div.ultimo big").FirstOrDefault().InnerText;
                cierreAnterior = html.CssSelect("div.columna1 div.cierreAnterior big").FirstOrDefault().InnerText;
                variacion      = html.CssSelect("div.columna1 div.variacion big").FirstOrDefault().InnerText;

                divisas.Add(new DivisaViewModel
                {
                    Nombre        = "BADLAR ENTIDADES PRIVADAS EN $",
                    ValorCompra   = ultimo,
                    ValorVenta    = cierreAnterior,
                    Variacion     = variacion,
                    Actualizacion = DateTime.UtcNow.ToLongDateString(),
                    Simbolo       = "%",
                });
            }
            catch
            {
            }

            try
            {
                ultimo         = html.CssSelect("div.columna2 div.ultimo big").FirstOrDefault().InnerText;
                cierreAnterior = html.CssSelect("div.columna2 div.cierreAnterior big").FirstOrDefault().InnerText;
                variacion      = html.CssSelect("div.columna2 div.variacion big").FirstOrDefault().InnerText;

                divisas.Add(new DivisaViewModel
                {
                    Nombre        = "CALL A 1 DÍA ENTIDADES DE 1º LÍNEA",
                    ValorCompra   = ultimo,
                    ValorVenta    = cierreAnterior,
                    Variacion     = variacion,
                    Actualizacion = DateTime.UtcNow.ToLongDateString(),
                    Simbolo       = "%",
                });
            }
            catch
            {
            }


            try
            {
                ultimo         = html.CssSelect("div.columna3 div.ultimo big").FirstOrDefault().InnerText;
                cierreAnterior = html.CssSelect("div.columna3 div.cierreAnterior big").FirstOrDefault().InnerText;
                variacion      = html.CssSelect("div.columna3 div.variacion big").FirstOrDefault().InnerText;

                divisas.Add(new DivisaViewModel
                {
                    Nombre        = "CALL A 1 DÍA ENTIDADES DE 2º LÍNEA",
                    ValorCompra   = ultimo,
                    ValorVenta    = cierreAnterior,
                    Variacion     = variacion,
                    Actualizacion = DateTime.UtcNow.ToLongDateString(),
                    Simbolo       = "%",
                });
            }
            catch
            {
            }


            try
            {
                ultimo         = html.CssSelect("div.columna1 div.ultimo big").Skip(1).Take(1).FirstOrDefault().InnerText;
                cierreAnterior = html.CssSelect("div.columna1 div.cierreAnterior big").Skip(1).Take(1).FirstOrDefault().InnerText;
                variacion      = html.CssSelect("div.columna1 div.variacion big").Skip(1).Take(1).FirstOrDefault().InnerText;

                divisas.Add(new DivisaViewModel
                {
                    Nombre        = "BAIBAR PROMEDIO PONDERADO EN $",
                    ValorCompra   = ultimo,
                    ValorVenta    = cierreAnterior,
                    Variacion     = variacion,
                    Actualizacion = DateTime.UtcNow.ToLongDateString(),
                    Simbolo       = "%",
                });
            }
            catch
            {
            }

            try
            {
                ultimo         = html.CssSelect("div.columna2 div.ultimo big").Skip(1).Take(1).FirstOrDefault().InnerText;
                cierreAnterior = html.CssSelect("div.columna2 div.cierreAnterior big").Skip(1).Take(1).FirstOrDefault().InnerText;
                variacion      = html.CssSelect("div.columna2 div.variacion big").Skip(1).Take(1).FirstOrDefault().InnerText;

                divisas.Add(new DivisaViewModel
                {
                    Nombre        = "BAIBOR EN $ A 6 MESES",
                    ValorCompra   = ultimo,
                    ValorVenta    = cierreAnterior,
                    Variacion     = variacion,
                    Actualizacion = DateTime.UtcNow.ToLongDateString(),
                    Simbolo       = "%",
                });
            }
            catch
            {
            }


            try
            {
                ultimo         = html.CssSelect("div.columna3 div.ultimo big").Skip(1).Take(1).FirstOrDefault().InnerText;
                cierreAnterior = html.CssSelect("div.columna3 div.cierreAnterior big").Skip(1).Take(1).FirstOrDefault().InnerText;
                variacion      = html.CssSelect("div.columna3 div.variacion big").Skip(1).Take(1).FirstOrDefault().InnerText;

                divisas.Add(new DivisaViewModel
                {
                    Nombre        = "ENCUESTA PLAZO FIJO 30 DÍAS EN $",
                    ValorCompra   = ultimo,
                    ValorVenta    = cierreAnterior,
                    Variacion     = variacion,
                    Actualizacion = DateTime.UtcNow.ToLongDateString(),
                    Simbolo       = "%",
                });
            }
            catch
            {
            }


            var result = new DivisaModel
            {
                Actualizacion = DateTime.Now,
                Divisas       = divisas,
            };

            return(result);
        }
        public static DivisaModel GetModel()
        {
            var divisas = new List <DivisaViewModel>();

            HtmlNode html = new Scraper(new Uri("http://www.ambito.com/economia/mercados/monedas/dolar/"), Encoding.UTF7).GetNodes();

            var compra    = html.CssSelect("div.bonosPrincipal div.ultimo big").FirstOrDefault().InnerText;
            var venta     = html.CssSelect("div.bonosPrincipal div.cierreAnterior big").FirstOrDefault().InnerText;
            var variacion = html.CssSelect("div.bonosPrincipal div.variacion big").FirstOrDefault().InnerText;
            var fecha     = html.CssSelect("div.bonosPrincipal div.dolarFecha big").FirstOrDefault().InnerText;

            var variacionOficial = variacion;
            var fechaOficial     = fecha;
            var compraOficial    = compra;
            var ventaOficial     = venta;

            divisas.Add(new DivisaViewModel
            {
                Nombre        = "Dólar",
                Simbolo       = "U$S",
                ValorCompra   = compra,
                ValorVenta    = venta,
                Variacion     = variacion,
                Actualizacion = fecha,
            });

            compra    = html.CssSelect("div.bonosPrincipal div.ultimo big").Skip(1).FirstOrDefault().InnerText;
            venta     = html.CssSelect("div.bonosPrincipal div.cierreAnterior big").Skip(1).FirstOrDefault().InnerText;
            variacion = html.CssSelect("div.bonosPrincipal div.variacion big").Skip(1).FirstOrDefault().InnerText;
            fecha     = html.CssSelect("div.bonosPrincipal div.dolarFecha big").Skip(1).FirstOrDefault().InnerText;

            divisas.Add(new DivisaViewModel
            {
                Nombre        = "Dólar Blue",
                Simbolo       = "U$S",
                ValorCompra   = compra,
                ValorVenta    = venta,
                Variacion     = variacion,
                Actualizacion = fecha,
            });


            try
            {
                compra    = html.CssSelect("div.bonosPrincipal div.ultimo big").Skip(2).Take(1).FirstOrDefault().InnerText;
                venta     = html.CssSelect("div.bonosPrincipal div.cierreAnterior big").Skip(2).Take(1).FirstOrDefault().InnerText;
                variacion = html.CssSelect("div.bonosPrincipal div.variacion big").Skip(2).Take(1).FirstOrDefault().InnerText;
                fecha     = html.CssSelect("div.bonosPrincipal div.dolarFecha big").Skip(2).Take(1).FirstOrDefault().InnerText;

                divisas.Add(new DivisaViewModel
                {
                    Nombre        = "Mayorista",
                    Simbolo       = "U$S",
                    ValorCompra   = compra,
                    ValorVenta    = venta,
                    Variacion     = variacion,
                    Actualizacion = fecha,
                });
            }
            catch
            {
            }

            try
            {
                compra    = html.CssSelect("div.bonosPrincipal div.cierreAnteriorUnico big").Take(1).FirstOrDefault().InnerText;
                venta     = html.CssSelect("div.bonosPrincipal div.cierreAnteriorUnico big").Take(1).FirstOrDefault().InnerText;
                variacion = html.CssSelect("div.bonosPrincipal div.variacion big").Take(1).FirstOrDefault().InnerText;
                fecha     = html.CssSelect("div.bonosPrincipal div.dolarFecha big").Take(1).FirstOrDefault().InnerText;

                divisas.Add(new DivisaViewModel
                {
                    Nombre        = "Dólar Soja",
                    Simbolo       = "U$S",
                    ValorCompra   = compra,
                    ValorVenta    = venta,
                    Variacion     = variacion,
                    Actualizacion = fecha,
                });
            }
            catch
            {
            }

            try
            {
                compra    = html.CssSelect("div.bonosPrincipal div.cierreAnteriorUnico big").Skip(1).Take(1).FirstOrDefault().InnerText;
                venta     = html.CssSelect("div.bonosPrincipal div.cierreAnteriorUnico big").Skip(1).Take(1).FirstOrDefault().InnerText;
                variacion = html.CssSelect("div.bonosPrincipal div.variacion big").Skip(1).Take(1).FirstOrDefault().InnerText;
                fecha     = html.CssSelect("div.bonosPrincipal div.dolarFecha big").Skip(1).Take(1).FirstOrDefault().InnerText;

                divisas.Add(new DivisaViewModel
                {
                    Nombre        = "Contado con liquidación",
                    Simbolo       = "U$S",
                    ValorCompra   = compra,
                    ValorVenta    = venta,
                    Variacion     = variacion,
                    Actualizacion = fecha,
                });
            }
            catch
            {
            }


            try
            {
                compra    = html.CssSelect("div.bonosPrincipal div.cierreAnteriorUnico big").Skip(2).Take(1).FirstOrDefault().InnerText;
                venta     = html.CssSelect("div.bonosPrincipal div.cierreAnteriorUnico big").Skip(2).Take(1).FirstOrDefault().InnerText;
                variacion = html.CssSelect("div.bonosPrincipal div.variacion big").Skip(2).Take(1).FirstOrDefault().InnerText;
                fecha     = html.CssSelect("div.bonosPrincipal div.dolarFecha big").Skip(2).Take(1).FirstOrDefault().InnerText;

                divisas.Add(new DivisaViewModel
                {
                    Nombre        = "Dólar Bolsa",
                    Simbolo       = "U$S",
                    ValorCompra   = compra,
                    ValorVenta    = venta,
                    Variacion     = variacion,
                    Actualizacion = fecha,
                });
            }
            catch
            {
            }

            var result = new DivisaModel
            {
                Actualizacion = DateTime.Now,
                Divisas       = divisas,
            };

            return(result);
        }
        public static BicicletasStatusModel GetModel()
        {
            IList <BicicletaEstacion> estaciones = new List <BicicletaEstacion>();

            HtmlNode html = new Scraper(new Uri("http://bicis.buenosaires.gob.ar/mapa.aspx")).GetNodes();

            var cssSelect = html.CssSelect("script");
            var script    = cssSelect.Last().InnerText;

            foreach (var posta in script.Split(new[] { "google.maps.LatLng(" }, StringSplitOptions.RemoveEmptyEntries).Skip(2))
            {
                var a = posta.Split(new[] { "),clickable" }, StringSplitOptions.RemoveEmptyEntries);

                //-34.592308,-58.37501
                string arg0 = a[0];

                var lat = double.Parse(arg0.Split(',')[0].Trim(), NumberStyles.Any, CultureInfo.InvariantCulture);
                var lon = double.Parse(arg0.Split(',')[1].Trim(), NumberStyles.Any, CultureInfo.InvariantCulture);

                string arg01 = posta.Split(new[] { "google.maps.InfoWindow({content:'" }, StringSplitOptions.RemoveEmptyEntries)[1];

                string arg1 = arg01.Split(new[] { "',maxWidth:120}" }, StringSplitOptions.RemoveEmptyEntries)[0];

                var arg2 = arg1.Split(new[] { "<br>" }, StringSplitOptions.RemoveEmptyEntries);

                string nombre;
                string estado;
                string horario;
                int    cantidad;

                if (arg2.Length == 4)
                {
                    //<div style="height:100px;"><span class="style1">RETIRO
                    //<br>Cerrado. Horario de atención: Lun a Vie de 8 a 20. Sáb 9 a 15.</span>
                    //<br><span class="style2">Cant. Bicicletas disponibles: 8</span><br></div>
                    nombre = arg2[0].Split('>')[2].Trim().ToUpperInvariant();

                    estado = arg2[1].Split('.')[0].Trim();

                    horario = arg2[1].Split(':')[1].Split('<')[0].Trim();

                    cantidad = int.Parse(arg2[2].Split(':')[1].Split('<')[0].Trim());
                }
                else
                {
                    //<div style="height:100px;"><span class="style1">RETIRO</span>
                    //<br><span class="style2">Cant. Bicicletas disponibles: 2</span><br></div>
                    nombre = arg2[0].Split('>')[2].Split('<')[0].Trim().ToUpperInvariant();

                    cantidad = int.Parse(arg2[1].Split(':')[1].Split('<')[0].Trim());

                    estado = GetEstadoByCantidad(cantidad);

                    horario = string.Empty;
                }

                var estacion = new BicicletaEstacion
                {
                    Latitud  = lat,
                    Longitud = lon,
                    Nombre   = nombre,
                    Estado   = estado,
                    Horario  = horario,
                    Cantidad = cantidad
                };

                estaciones.Add(estacion);
            }

            return(new BicicletasStatusModel
            {
                Actualizacion = DateTime.UtcNow,
                Estaciones = estaciones,
            });
        }