public WebPageData[] ExtractData(HtmlDocument doc) { AlbumImages.Clear(); Dictionary <string, string> att = new Dictionary <string, string>(); att.Add("width", "100%"); att.Add("style", "background-color: white;"); var container = Helper.AnyChild(doc.DocumentNode, "table", att, true); if (container == null) { return(null); } //TODO : add support for http://www.idlebrain.com/movie/photogallery/madhusharma1.html var imgNodes = Helper.AllChild(container, "img"); if (imgNodes == null) { return(null); } int index = 0; List <WebPageData> data = new List <WebPageData>(); foreach (var imgNode in imgNodes) { string thSrc = (webDir.EndsWith("/") ? webDir : webDir + "/") + imgNode.GetAttributeValue("src", ""); var singleData = WebPageData.GetTextOnly($"{index++}", ""); singleData.IsFinal = true; singleData.UID = UidGenerator(); singleData.ImageUrl = thSrc; //image link var imgDefi = new ImageDefinition() { thumbnil = thSrc, original = (webDir.EndsWith("/") ? webDir : webDir + "/") + imgNode.GetAttributeValue("src", "").Replace("th_", "") }; AlbumImages.Add(imgDefi); data.Add(singleData); } return(data.ToArray()); }
public IWebPageReader OnClickCallback(WebPageData item) { switch (currentState) { case CurrentStateInfo.Unknow: break; case CurrentStateInfo.ListOfPerson: AlbumImages.Clear(); if (architecture.ListOfAlbumReader == null) //one level skipped { currentState = CurrentStateInfo.ListOfAlbum; return(OnClickCallback(item)); } architecture.ListOfAlbumReader.Url = architecture.ListOfAlbumReader.GetUrl((Person)item.Tag); LoadConfig(architecture.ListOfAlbumReader); informationForLevel = item.Tag; return(this); case CurrentStateInfo.ListOfAlbum: AlbumImages.Clear(); if (architecture.ListOfAlbumReader == null) { try { item.Tag = Changer.ToAlbum((Person)item.Tag); } catch (Exception) { } } architecture.ListOfImagesReader.Url = architecture.ListOfImagesReader.GetUrl((Album)item.Tag); LoadConfig(architecture.ListOfImagesReader); informationForLevel = item.Tag; return(this); case CurrentStateInfo.ListOfImage: break; case CurrentStateInfo.ShowImage: break; default: break; } return(null); }
public WebPageData[] ExtractData(HtmlDocument doc) { arrangeCurrentState(); List <WebPageData> data = new List <WebPageData>(); switch (currentState) { case CurrentStateInfo.Unknow: break; case CurrentStateInfo.ListOfPerson: AlbumImages.Clear(); var persons = architecture.ListOfPersonReader.GetListOfPerson(doc); foreach (var person in persons) { WebPageData singleData = new WebPageData(); singleData.IsFinal = true; singleData.ImageUrl = person.ImageUrl; singleData.mainText = person.Name; singleData.subText = (person.Description == string.Empty ? "" : person.Description); singleData.NoOfItemsIncluded = person.NoOfAlbums; singleData.UID = MyGlobal.UidGenerator(); singleData.Tag = person; data.Add(singleData); } break; case CurrentStateInfo.ListOfAlbum: if (architecture.ListOfAlbumReader == null) { currentState = CurrentStateInfo.ListOfPerson; return(ExtractData(doc)); } AlbumImages.Clear(); var albums = architecture.ListOfAlbumReader.GetAlbumList((Person)informationForLevel, doc); foreach (var album in albums) { WebPageData singleData = new WebPageData(); singleData.IsFinal = true; singleData.ImageUrl = album.ImageUrl; singleData.mainText = album.Name; singleData.subText = (album.Description == string.Empty ? "" : album.Description); singleData.NoOfItemsIncluded = album.NoOfImages; singleData.UID = MyGlobal.UidGenerator(); singleData.Tag = album; data.Add(singleData); } break; case CurrentStateInfo.ListOfImage: var images = architecture.ListOfImagesReader.GetImageList((Album)informationForLevel, doc); foreach (var img in images) { WebPageData singleData = new WebPageData(); singleData.IsFinal = true; singleData.ImageUrl = img.Image.thumbnil; singleData.mainText = img.Name; singleData.UID = MyGlobal.UidGenerator(); data.Add(singleData); AlbumImages.Add(img.Image); //get the data for the next level and cached it } break; case CurrentStateInfo.ShowImage: break; default: break; } return(data.Count == 0 ? null : data.ToArray()); }