private Movie ParseMovie(HtmlNode movieNode) { string xpName = "div[2]/ul/li[1]"; string xpProducer = "div[2]/ul/li[5]"; string xpLength = "div[2]/ul/li[3]"; string xpType = "div[2]/ul/li[2]"; string xpImage = ".//img[@class='dn_imgmovies']"; string xpDetail = "div[2]//a"; Movie mv = new Movie(); try { log.WriteLog("Begin Parse A Movie"); mv.MvSource = this.GetType().Name; mv.Name = movieNode.SelectSingleNode(xpName).InnerText.Trim(); mv.Producer = movieNode.SelectSingleNode(xpProducer).InnerText; mv.Producer = CleanLotteData(mv.Producer); mv.Length = movieNode.SelectSingleNode(xpLength).InnerText; mv.Length = CleanLotteData(mv.Length); mv.Type = movieNode.SelectSingleNode(xpType).InnerText.Trim(); mv.Type = CleanLotteData(mv.Type); mv.Image = @"http://lottecinemavn.com/vi-vn" + movieNode.SelectSingleNode(xpImage).Attributes["src"].Value; mv.DetailLink = @"http://lottecinemavn.com/vi-vn" + movieNode.SelectSingleNode(xpDetail).Attributes["href"].Value; // Parse detail of a movie log.WriteLog("Parse movie detail at " + mv.DetailLink); HtmlWeb website = new HtmlWeb(); HtmlAgilityPack.HtmlDocument doc = website.Load(mv.DetailLink); mv.TrailerLink = "http:" + doc.DocumentNode.SelectSingleNode("//iframe[contains(@src,'youtube')]").Attributes["src"].Value; mv.Info = doc.DocumentNode.SelectSingleNode("//div[@class='dn_contentmvdt dn_tabsmvdt1']").InnerText.Trim(); // Parse ticket info log.WriteLog("Parse ticket info"); HtmlAgilityPack.HtmlNodeCollection listNode = doc.DocumentNode.SelectNodes("//div[@class='dn_contentmvdt dn_tabsmvdt2']/div"); List<Ticket> tickets = new List<Ticket>(); if (listNode == null) { } else { for (int i = 0; i < listNode.Count; i = i + 3) { string strTheater = listNode[i].InnerText.Trim(); HtmlAgilityPack.HtmlNodeCollection scheduleNode = listNode[i + 2].SelectNodes(".//table"); for (int j = 0; j < scheduleNode.Count; j++) { Regex clean = new Regex("\n|\r"); string showDate = scheduleNode[j].SelectNodes(".//div")[0].InnerText.Trim().Replace("-","/"); string showTime = clean.Replace(scheduleNode[j].SelectNodes(".//div")[1].InnerText.Trim(), " "); Ticket mvTicket = new Ticket(this.GetType().Name, strTheater, showDate, showTime); tickets.Add(mvTicket); } } } mv.Tickets = tickets; } catch (Exception e) { log.WriteLog("##############################################"); log.WriteLog("Exception " + e.Source + " : " + e.Message); } log.WriteLog("Parsed : " + mv.DetailLink); return mv; }
private Movie ParseMovie(HtmlNode movieNode) { string xpName = "div[@class='m_center']/a/span"; string xpDetail = "div[@class='m_center']/a"; string xpProducer = "//div[@class='info']/p[1]"; string xpLength = "div[@class='m_center']/text()[3]"; string xpType = "div[@class='m_center']/text()[4]"; string xpImage = "//div[@class='movie-info']/div[@class='photo']/img"; string dbName = ""; Movie mv = new Movie(); try { log.WriteLog("Begin Parse A Movie"); mv.MvSource = this.GetType().Name; mv.Name = movieNode.SelectSingleNode(xpName).InnerText.Trim(); mv.DetailLink = @"http://www.cgv.vn" + movieNode.SelectSingleNode(xpDetail).Attributes["href"].Value; mv.Length = movieNode.SelectSingleNode(xpLength).InnerText.Split(':')[1].Trim(); mv.Length = mv.Length.Replace("ờ", "ờ").Replace("à", "à").Replace("ú", "ú"); mv.Type = movieNode.SelectSingleNode(xpType).InnerText.Split(':')[1].Trim(); dbName = movieNode.SelectSingleNode("div[@class='m_right']//div[@class='q_session_time']/a[2]").Attributes["onclick"].Value.ToString().Replace("/vn/", " ").Trim(); Regex cleanDbName = new Regex(".*\"(.*?)\""); Match extractDbName = cleanDbName.Match(dbName); dbName = extractDbName.Groups[1].Value; // Parse detail of a movie log.WriteLog("Parse movie detail at " + mv.DetailLink); HtmlWeb website = new HtmlWeb(); HtmlAgilityPack.HtmlDocument doc = website.Load(mv.DetailLink); mv.Producer = doc.DocumentNode.SelectSingleNode(xpProducer).InnerText.Split(':')[1].Trim(); mv.Image = @"http://www.cgv.vn" + doc.DocumentNode.SelectSingleNode(xpImage).Attributes["src"].Value; mv.TrailerLink = doc.DocumentNode.SelectSingleNode("//div[@id='tab1']").InnerHtml.ToString(); Regex pattern = new Regex("ytlink=(.*?)&"); Match matcher = pattern.Match(mv.TrailerLink); mv.TrailerLink =@"http://www.youtube.com/embed/" + matcher.Groups[1].Value; mv.Info = doc.DocumentNode.SelectSingleNode("//div[@class='desc']").InnerText.Trim(); // Parse ticket info log.WriteLog("Parse ticket info"); //HtmlAgilityPack.HtmlNodeCollection listNode = doc.DocumentNode.SelectNodes("//div[@class='dn_contentmvdt dn_tabsmvdt2']/div"); List<Ticket> tickets = new List<Ticket>(); XmlDocument xmlDoc = new XmlDocument(); foreach (var item in theaterList) { string ticketInfo = String.Format(@"https://www.cgv.vn/megastarXMLData.aspx?RequestType=GetSessionTimes&&CinemaID={0}&&MovieName={1}&&Time=TodayAndTomorrow&&visLang=1", item.Key, dbName); xmlDoc.Load(ticketInfo); log.WriteLog("Ticket info of " + dbName + " at " + ticketInfo); // read detail XmlElement rootElement = xmlDoc.DocumentElement; XmlNodeList dateList = rootElement.GetElementsByTagName("date"); if (dateList.Count != 0) { for (int i = 0; i < dateList.Count; i++) { if (dateList[i].Attributes.Count != 0) { string showDate = dateList[i].Attributes["name"].Value.ToString(); string showTime = ""; for (int j = 0; j < dateList[i].ChildNodes.Count; j++) { XmlNodeList timeList = dateList[i].ChildNodes[j].ChildNodes; for (int k = 0; k < timeList.Count; k++) { if (timeList[k].Name.Equals("value")) { string time = timeList[k].InnerText; Regex clean = new Regex("<a .*>(.*?)</a>"); Match extract = clean.Match(time); time = extract.Groups[1].Value; if (time.Contains("AM")) { time = time.Replace("AM", " ").Trim(); } else if (time.Contains("PM")) { time = time.Replace("PM", " ").Trim(); int hour = int.Parse(time.Split(':')[0]) + 12; string min = time.Split(':')[1]; time = hour + ":" + min; } showTime += time + " "; break; } } } Ticket mvTicket = new Ticket(this.GetType().Name, item.Value, showDate, showTime); tickets.Add(mvTicket); } } } } mv.Tickets = tickets; } catch (Exception e) { log.WriteLog("##############################################"); log.WriteLog("Exception " + e.Source + " : " + e.Message); } log.WriteLog("Parsed : " + mv.DetailLink); return mv; }
private Movie ParseMovie(HtmlNode movieNode) { string xpName = "input[2]"; string xpFixName = "//div[@class='fr movie-detail']/div[1]"; string xpType = "//div[@class='fr movie-detail']/div[8]/span[2]"; string xpLength = "//div[@class='fr movie-detail']/div[11]/span[2]"; string xpProducer = "//div[@class='fr movie-detail']/div[10]/span[2]"; string xpImage = "div[@class='img-movie-item']//div[@class='rel']/a[1]/img"; string xpDetail = "div[@class='img-movie-item']//div[@class='rel']/a[1]"; string xpInfo = "//div[@class='fr movie-detail']/div[18]"; Movie mv = new Movie(); try { log.WriteLog("Begin Parse A Movie"); mv.MvSource = this.GetType().Name; mv.Name = movieNode.SelectSingleNode(xpName).Attributes["value"].Value.Trim(); mv.TrailerLink = movieNode.SelectSingleNode("input[3]").Attributes["value"].Value.Trim().Replace("/v/","/embed/"); mv.Image = @"https://www.galaxycine.vn" + movieNode.SelectSingleNode(xpImage).Attributes["src"].Value; mv.DetailLink = @"https://www.galaxycine.vn" + movieNode.SelectSingleNode(xpDetail).Attributes["href"].Value; // Parse detail of a movie log.WriteLog("Parse movie detail at " + mv.DetailLink); HtmlWeb website = new HtmlWeb(); HtmlAgilityPack.HtmlDocument doc = website.Load(mv.DetailLink); mv.Name = doc.DocumentNode.SelectSingleNode(xpFixName).InnerText.Trim(); mv.Type = doc.DocumentNode.SelectSingleNode(xpType).InnerText.Trim(); mv.Producer = doc.DocumentNode.SelectSingleNode(xpProducer).InnerText.Trim(); mv.Length = doc.DocumentNode.SelectSingleNode(xpLength).InnerText.Trim(); mv.Info = doc.DocumentNode.SelectSingleNode(xpInfo).InnerText.Trim(); // Parse ticket info log.WriteLog("Parse ticket info"); HtmlAgilityPack.HtmlNodeCollection listNode = doc.DocumentNode.SelectNodes("//div[@class='mov_sc']"); List<Ticket> tickets = new List<Ticket>(); for (int i = 0; i < listNode.Count; i++) { string strTheater = listNode[i].SelectSingleNode("span[1]").InnerText.Replace("GLX"," ").Trim(); HtmlAgilityPack.HtmlNodeCollection scheduleNode = listNode[i].SelectNodes("./div[2]/div"); for (int j = 0; j < scheduleNode.Count; j++) { string showDate = scheduleNode[j].SelectSingleNode("span").InnerText.Trim().Split(',')[1].Replace(".", "/").Trim() ; string showTime = ""; for (int k = 0; k < scheduleNode[j].SelectSingleNode("div[2]").ChildNodes.Count; k++) { showTime += scheduleNode[j].SelectSingleNode("div[2]").ChildNodes[k].InnerText.Trim() + " "; } Ticket mvTicket = new Ticket(this.GetType().Name, strTheater, showDate, showTime); tickets.Add(mvTicket); } } mv.Tickets = tickets; } catch (Exception e) { log.WriteLog("##############################################"); log.WriteLog("Exception " + e.Source + " : " + e.Message); } log.WriteLog("Parsed : " + mv.DetailLink); return mv; }