public void AddNewCarMaxVehicle(int year, string make, string model, string trim, long carId, string url) { var newVehicle = LoadDetailCar(year, make, model, trim, carId, url); var vinmarketSqlHelper = new VINMarketSqlHelper(); try { var id = vinmarketSqlHelper.GetId(string.Format("SELECT VehicleId FROM CarMaxVehicle WHERE VehicleID = @carId"), new { carId }); if (id == 0) { var insert = CarMaxQuery.InsertQuery(newVehicle); vinmarketSqlHelper.QueryText(insert); } else { newVehicle.VehicleId = id; var update = CarMaxQuery.UpdateQuery(newVehicle); vinmarketSqlHelper.QueryText(update); } Console.WriteLine("{0} {1} - {2}", make, model, url); } catch (Exception ex) { _logging.Error("CARMAX - InsertVehicleToDatabase", ex); Console.WriteLine("CARMAX - InsertVehicleToDatabase {0}", ex.Message); } }
public void MarkSoldCarMaxVehicles() { //_logging.Info(String.Format("START to mark sold Car Max Vehicles")); Console.WriteLine(String.Format("START to mark sold Car Max Vehicles")); //_commonManagementForm.MarkSoldCarMaxVehicles(); (new VINMarketSqlHelper()).QueryText(CarMaxQuery.MarkSoldQuery()); //_logging.Info(String.Format("END to mark sold Car Max Vehicles")); Console.WriteLine(String.Format("END to mark sold Car Max Vehicles")); }
private void LoadCars(long makeId, string make, long modelId, string model, int distance, int zipcode) { var vinmarketSqlHelper = new VINMarketSqlHelper(); var originalUrl = string.Format("http://www.carmax.com/search?ANa={0}&D={1}&zip={2}&N={3}&Ep=search:results:results%20page", modelId, distance, zipcode, makeId); var searchUrl = originalUrl; while (!String.IsNullOrEmpty(searchUrl)) { var content = WebHandler.DownloadContent(searchUrl); var xmlDocument = WebHandler.DownloadDocument(content); var aNodes = xmlDocument.SelectNodes("//div[@id='resultsList']/div[@class='car']"); if (aNodes != null && aNodes.Count > 0) { var insertQueries = new List <string>(); var updateQueries = new List <string>(); try { foreach (XmlNode node in aNodes) { var carUrl = "http://www.carmax.com" + node.Attributes["data-details-url"].Value; var carId = Convert.ToInt64(node.Attributes["sn"].Value); var vehicleNameNode = node.SelectSingleNode(".//a[@class='vehicleName']//h3"); var year = Convert.ToInt32(vehicleNameNode.InnerText.Substring(0, 4)); var trim = vehicleNameNode.InnerText.Replace(year.ToString(), "").Replace(make, "").Replace(model, "").Trim(); var newVehicle = LoadDetailCar(year, make, model, trim, carId, carUrl); if (newVehicle == null) { continue; } var imgNode = node.SelectSingleNode(".//div[@class='photo']//img"); newVehicle.FullPhotos = imgNode != null ? imgNode.Attributes["src"].Value : string.Empty; newVehicle.ThumbnailPhotos = newVehicle.FullPhotos; try { var id = vinmarketSqlHelper.GetId(string.Format("SELECT VehicleId FROM CarMaxVehicle WHERE VehicleID = @carId"), new { carId }); if (id == 0) { var insert = CarMaxQuery.InsertQuery(newVehicle); insertQueries.Add(insert); } else { newVehicle.VehicleId = id; var update = CarMaxQuery.UpdateQuery(newVehicle); updateQueries.Add(update); } //_commonManagementForm.AddNewCarMaxVehicle(newVehicle); Console.WriteLine("{0} {1} - {2}", make, model, carUrl); } catch (Exception ex) { _logging.Error("CARMAX - InsertVehicleToDatabase", ex); Console.WriteLine("CARMAX - InsertVehicleToDatabase {0}", ex.Message); } } } catch (Exception ex) { throw ex; } if (insertQueries.Any()) { vinmarketSqlHelper.QueryText(string.Join(" ", insertQueries)); } if (updateQueries.Any()) { vinmarketSqlHelper.QueryText(string.Join(" ", updateQueries)); } } var nextNode = xmlDocument.SelectSingleNode("//li[@id='next']"); searchUrl = nextNode != null && nextNode.Attributes["data-url"] != null ? originalUrl + "&" + nextNode.Attributes["data-url"].Value : string.Empty; } }
private void LoadCars(string apiKey) { var page = 1; var url = string.Format("https://api.carmax.com/v1/api/vehicles/?SortKey=0&Distance=all&PerPage=50&Zip=92627&Page={1}&platform=carmax.com&apikey={0}", apiKey, page); var content = WebHandler.DownloadContent(url); var xmlDocument = WebHandler.DownloadDocument(content); var totalNode = xmlDocument.SelectSingleNode("//*[local-name()='resultcount']"); if (totalNode == null) { return; } var totalOfRecords = Convert.ToInt32(totalNode.InnerText); var numberOfPages = totalOfRecords % 50 == 0 ? totalOfRecords / 50 : (totalOfRecords / 50) + 1; do { if (page > 1) { //url = string.Format("https://api.carmax.com/v1/api/vehicles/?SortKey=0&Distance=all&PerPage=50&Zip=92627&Page={1}&platform=carmax.com&apikey={0}", apiKey, page); xmlDocument = WebHandler.DownloadDocument(WebHandler.DownloadContent(url)); } var resultNodes = xmlDocument.SelectNodes("//*[local-name()='results']/*[local-name()='resultsrecordmodel']"); if (resultNodes != null) { var vinmarketSqlHelper = new VINMarketSqlHelper(); var insertQueries = new List <string>(); var updateQueries = new List <string>(); foreach (XmlNode item in resultNodes) { try { var newVehicle = LoadDetailCar(item); var id = vinmarketSqlHelper.GetId(string.Format("SELECT CarMaxVehicleId FROM CarMaxVehicle WHERE CarMaxVehicleId = @carId"), new { carId = newVehicle.CarMaxVehicleId }); if (id == 0) { var insert = CarMaxQuery.InsertQuery(newVehicle); insertQueries.Add(insert); } else { var update = CarMaxQuery.UpdateQuery(newVehicle); updateQueries.Add(update); } Console.WriteLine("{0} {1} - {2}", newVehicle.Make, newVehicle.Model, newVehicle.Url); } catch (Exception ex) { Console.WriteLine("CARMAX - InsertVehicleToDatabase {0}", ex.Message); } } if (insertQueries.Any()) { vinmarketSqlHelper.QueryText(string.Join(" ", insertQueries)); } if (updateQueries.Any()) { vinmarketSqlHelper.QueryText(string.Join(" ", updateQueries)); } } var urlNode = xmlDocument.SelectSingleNode("//*[local-name()='links']/*[local-name()='resourcelink']/*[local-name()='href']"); if (urlNode != null) { url = urlNode.InnerText; } else { url = null; } page++; Console.WriteLine("Processing next page {0}", page); } while (page <= numberOfPages && url != null); }