Esempio n. 1
0
            public List <People> GetPeopleFromXmlFile(string path)
            {
                List <People> peoples = new List <People>();

                // Load seed data file : ~/Resources/SeedData/People.xml
                XDocument xmlDoc = XDocument.Load(Path.Combine(path, PeopleSearchConstant.PeopleXmlFileName));

                // Virtual path (of a directory) on server which contains images for people.
                string imageDirectoryPath = HttpContext.Current.Server.MapPath(PeopleSearchConstant.ImageDirectoryPath);

                // Iterate over each <detail> tag in xmlDoc to get people information.
                foreach (var DetailNode in xmlDoc.Descendants(PeopleSearchConstant.DetailsNode))
                {
                    People people = new People();
                    people.FirstName   = DetailNode.Element(PeopleSearchConstant.FirstNameNode).Value;
                    people.LastName    = DetailNode.Element(PeopleSearchConstant.LastNameNode).Value;
                    people.Address     = DetailNode.Element(PeopleSearchConstant.AddressNode).Value;
                    people.Interests   = DetailNode.Element(PeopleSearchConstant.InterestsNode).Value;
                    people.DateOfBirth = Convert.ToDateTime(DetailNode.Element(PeopleSearchConstant.DateOfBirthNode).Value);
                    people.Gender      = DetailNode.Element(PeopleSearchConstant.GenderNode).Value;

                    string imageName = DetailNode.Element(PeopleSearchConstant.ImageNameNode).Value;

                    // Virtual path of image file on server for the given <imagename>
                    string imagePath = Path.Combine(imageDirectoryPath, imageName);

                    people.Image = GetImageBytes(imagePath);

                    peoples.Add(people);
                }

                return(peoples);
            }
        private static void Show(DetailNode obj, Action beforeProperties = null)
        {
            //General
            NodeEditorGUILayout.PortField(obj.GetInputPort("Constraint"));
            NodeEditorGUILayout.PortField(obj.GetInputPort("Modifier"));

            obj.DistributionType = (DetailNode.Distribution)EditorGUILayout.EnumPopup("Distribution", obj.DistributionType);
            if (obj.DistributionType == DetailNode.Distribution.PoissonDisc)
            {
                obj.Spread = EditorGUIExtension.MinMaxFloatField("Spread", obj.Spread, 1f, 50f);
            }
            else
            {
                obj.UniformResolution = EditorGUIExtension.MinMaxIntField("Resolution", obj.UniformResolution, 2, 1024);
            }

            obj.MaxObjects = EditorGUILayout.IntField("Max Objects", obj.MaxObjects);

            if (beforeProperties != null)
            {
                beforeProperties();
            }

            EditorGUIExtension.DrawMinMax("Width Scale", ref obj.WidthScale.x, ref obj.WidthScale.y);
            EditorGUIExtension.DrawMinMax("Height Scale", ref obj.HeightScale.x, ref obj.HeightScale.y);

            if (obj.MaxObjects < 1)
            {
                obj.MaxObjects = 1;
            }
        }
Esempio n. 3
0
        public List <Person> GetPersonsFromXmlFile(string path)
        {
            List <Person> persons = new List <Person>();

            // Load seed data file : ~/Resources/SeedData/Person.xml
            XDocument xmlDoc = XDocument.Load(Path.Combine(path, Constants.PersonXmlFileName));

            // Virtual path (of a directory) on server which contains images for persons.
            string imageDirectoryPath = HttpContext.Current.Server.MapPath(Constants.ImageDirectoryPath);

            // Iterate over each <detail> tag in xmlDoc to get person information.
            foreach (var DetailNode in xmlDoc.Descendants(Constants.DetailsNode))
            {
                Person person = new Person();
                person.FirstName   = DetailNode.Element(Constants.FirstNameNode).Value;
                person.LastName    = DetailNode.Element(Constants.LastNameNode).Value;
                person.Address     = DetailNode.Element(Constants.AddressNode).Value;
                person.Hobbies     = DetailNode.Element(Constants.HobbiesNode).Value;
                person.DateOfBirth = Convert.ToDateTime(DetailNode.Element(Constants.DateOfBirthNode).Value);
                person.Gender      = DetailNode.Element(Constants.GenderNode).Value;

                string imageName = DetailNode.Element(Constants.ImageNameNode).Value;

                // Virtual path of image file on server for the given <imagename>
                string imagePath = Path.Combine(imageDirectoryPath, imageName);

                person.Image = GetImageBytes(imagePath);

                persons.Add(person);
            }

            return(persons);
        }
        public IInformation Make(string info, string name, int vers = 0)
        {
            switch (info)
            {
            case "AssemblyNode":
                return(AssemblyNode.CreateNode(name, vers));

            case "DetailNode":
                return(DetailNode.CreateNode(name, vers));

            case "MaterialNode":
                return(MaterialNode.CreateNode(name, vers));

            default:
                return(null);
            }
        }
Esempio n. 5
0
        public List <SearchResultObject> ParseSearch(String content)
        {
            List <SearchResultObject> SearchResults = new List <SearchResultObject>();

            HtmlDocument SearchResultDocument = new HtmlDocument();

            SearchResultDocument.LoadHtml(content);

            HtmlNode           MainContainer     = SearchResultDocument.DocumentNode.SelectSingleNode("//div[contains(@class,'mainContainer')]");
            HtmlNodeCollection SearchResultNodes = MainContainer.SelectNodes(".//div[contains(@class,'well')]/div[contains(@class,'row') and (contains(@class,'available') or contains(@class,'unavailable'))]");

            if (!Equals(SearchResultNodes, null))
            {
                foreach (HtmlNode SearchResultNode in SearchResultNodes)
                {
                    String ImgUrl        = ExtensionDescriptionAttribute.RootUrl + SearchResultNode.SelectSingleNode(".//img").Attributes["src"].Value.Substring(2),
                                  Name   = String.Empty,
                                  Link   = String.Empty;
                    LocationObject Cover = new LocationObject()
                    {
                        Url               = ImgUrl,
                        ExtensionName     = ExtensionDescriptionAttribute.Name,
                        ExtensionLanguage = ExtensionDescriptionAttribute.Language
                    };
                    List <String> AlternateNames = new List <String>(),
                                  AuthorsArtists = new List <String>(),
                                  Genres         = new List <String>();

                    foreach (HtmlNode DetailNode in SearchResultNode.SelectNodes(".//div[2]/div[contains(@class,'row')]"))
                    {
                        HtmlNode DetailTypeNode             = DetailNode.SelectSingleNode(".//div[1]/b[1] | .//div[1]/strong[1]"),
                                      DetailTextNode        = (DetailTypeNode != null) ? DetailTypeNode.NextSibling : null,
                                      DetailDescriptionNode = (DetailTextNode != null) ? DetailTextNode.NextSibling : null,
                                      MangaNameNode         = DetailNode.SelectSingleNode(".//div[1]/h1/a");
                        HtmlNodeCollection DetailLinkNodes  = DetailNode.SelectNodes(".//div[1]/a");
                        String             DetailType       = (DetailTypeNode != null) ? DetailTypeNode.InnerText.Trim().TrimEnd(':') : "MangaName",
                                           DetailValue = String.Empty;
                        String[] DetailValues          = { };
                        if (DetailLinkNodes != null)
                        {
                            DetailValues = (from HtmlNode LinkNode in DetailLinkNodes select LinkNode.InnerText).ToArray();
                        }
                        else if (MangaNameNode != null)
                        {
                            DetailValue = HtmlEntity.DeEntitize(MangaNameNode.InnerText.Trim());
                        }
                        else if (DetailDescriptionNode != null)
                        {
                            DetailValue = HtmlEntity.DeEntitize(DetailDescriptionNode.InnerText.Trim());
                        }
                        else if (DetailTextNode != null)
                        {
                            DetailValue = HtmlEntity.DeEntitize(DetailTextNode.InnerText.Trim());
                        }

                        switch (DetailType)
                        {
                        default: break;

                        case "MangaName":
                            Name = DetailValue;
                            Link = MangaNameNode.Attributes["href"].Value;
                            if (Link.StartsWith("../manga/?series="))
                            {
                                Link = Link.Substring("../manga/?series=".Length);
                            }
                            else if (Link.StartsWith("../read-online/"))
                            {
                                Link = Link.Substring("../read-online/".Length);
                            }
                            else
                            {
                                Link = Name.Replace(" ", String.Empty);
                            }
                            break;

                        case "Alternate Names": AlternateNames = (from String AltName in DetailValue.Split(',') select AltName.Trim()).ToList(); break;

                        case "Author": AuthorsArtists = DetailValues.ToList(); break;

                        case "Genre": Genres = DetailValues.ToList(); break;
                        }
                    }

                    SearchResults.Add(new SearchResultObject()
                    {
                        Cover             = Cover,
                        Name              = Name,
                        Url               = String.Format("{0}/read-online/{1}", ExtensionDescriptionAttribute.RootUrl, Link),
                        ExtensionName     = ExtensionDescriptionAttribute.Name,
                        ExtensionLanguage = ExtensionDescriptionAttribute.Language,
                        Rating            = -1,
                        Artists           = AuthorsArtists,
                        Authors           = AuthorsArtists
                    });
                }
            }

            return(SearchResults);
        }
Esempio n. 6
0
        public MangaObject ParseMangaObject(String content)
        {
            Int32 MangaInformationContentStart = content.IndexOf("<!-- Intro Series -->"),
                  MangaInformationContentEnd   = content.IndexOf("<!-- **END: Intro Series -->", MangaInformationContentStart);
            String MangaInformationContent     = content.Substring(MangaInformationContentStart, MangaInformationContentEnd - MangaInformationContentStart);

            Int32 MangaChaptersContentStart = content.IndexOf("<!-- Main Content -->"),
                  MangaChaptersContentEnd   = content.IndexOf("<!-- **END: Main Content -->", MangaChaptersContentStart);
            String MangaChaptersContent     = content.Substring(MangaChaptersContentStart, MangaChaptersContentEnd - MangaChaptersContentStart);

            HtmlDocument MangaObjectDocument = new HtmlDocument();

            MangaObjectDocument.LoadHtml(MangaInformationContent);

            HtmlNode MangaObjectNode = MangaObjectDocument.DocumentNode.SelectSingleNode(".//div/div");

            String MangaName             = String.Empty,
                   Description           = String.Empty;
            List <String> AlternateNames = new List <String>(),
                          AuthorsArtists = new List <String>(),
                          Genres         = new List <String>();

            foreach (HtmlNode DetailNode in MangaObjectNode.SelectNodes(".//div[2]/div[contains(@class,'row')]"))
            {
                HtmlNode DetailTypeNode             = DetailNode.SelectSingleNode(".//div[1]/b[1] | .//div[1]/strong[1]"),
                              DetailTextNode        = (DetailTypeNode != null) ? DetailTypeNode.NextSibling : null,
                              DetailDescriptionNode = (DetailTextNode != null) ? DetailTextNode.NextSibling : null,
                              MangaNameNode         = DetailNode.SelectSingleNode(".//div[1]/h1");
                HtmlNodeCollection DetailLinkNodes  = DetailNode.SelectNodes(".//div[1]/a");
                String             DetailType       = (DetailTypeNode != null) ? DetailTypeNode.InnerText.Trim().TrimEnd(':') : "MangaName",
                                   DetailValue = String.Empty;
                String[] DetailValues          = { };
                if (DetailLinkNodes != null)
                {
                    DetailValues = (from HtmlNode LinkNode in DetailLinkNodes select HtmlEntity.DeEntitize(LinkNode.InnerText.Trim())).ToArray();
                }
                else if (MangaNameNode != null)
                {
                    DetailValue = HtmlEntity.DeEntitize(MangaNameNode.InnerText.Trim());
                }
                else if (DetailDescriptionNode != null)
                {
                    DetailValue = HtmlEntity.DeEntitize(DetailDescriptionNode.InnerText.Trim());
                }
                else if (DetailTextNode != null)
                {
                    DetailValue = HtmlEntity.DeEntitize(DetailTextNode.InnerText.Trim());
                }

                switch (DetailType)
                {
                default: break;

                case "MangaName": MangaName = DetailValue; break;

                case "Alternate Names": AlternateNames = (from String AltName in DetailValue.Split(',') select HtmlEntity.DeEntitize(AltName.Trim())).ToList(); break;

                case "Author": AuthorsArtists = DetailValues.ToList(); break;

                case "Genre": Genres = DetailValues.ToList(); break;

                case "Description": Description = DetailValue; break;
                }
            }


            String Cover = ExtensionDescriptionAttribute.RootUrl + MangaObjectNode.SelectSingleNode(".//div[1]/img/@src").Attributes["src"].Value;

            List <ChapterObject> Chapters = new List <ChapterObject>();

            MangaObjectDocument.LoadHtml(MangaChaptersContent);
            HtmlNodeCollection RawChapterList = MangaObjectDocument.DocumentNode.SelectNodes(".//div[contains(@class,'row')]");

            foreach (HtmlNode RawChapterNode in RawChapterList.Skip(1))
            {
                HtmlNode ChapterNumberNode = RawChapterNode.SelectSingleNode(".//div[1]/a"),
                              ReleaseDate  = RawChapterNode.SelectSingleNode(".//div[2]/time");
                String   ChapterNumber     = Regex.Match(ChapterNumberNode.InnerText, @"\d+(\.\d+)?").Value;
                String[] ChapterSub        = ChapterNumber.Trim().Split('.');


                DateTime Released    = DateTime.Now;
                String   ReleasedTxt = ReleaseDate.InnerText.ToLower();
                if (ReleasedTxt.StartsWith("today"))
                {
                    Released = DateTime.Today;
                }
                else if (ReleasedTxt.StartsWith("yesterday"))
                {
                    Released = DateTime.Today.AddDays(-1);
                }
                else if (ReleasedTxt.EndsWith("ago"))
                {
                    Int32 tDelta = 0;
                    Int32.TryParse(ReleasedTxt.Split(' ')[0], out tDelta);
                    if (ReleasedTxt.Contains("hours"))
                    {
                        Released = Released.AddHours(0 - tDelta);
                    }
                    if (ReleasedTxt.Contains("minutes"))
                    {
                        Released = Released.AddMinutes(0 - tDelta);
                    }
                    if (ReleasedTxt.Contains("seconds"))
                    {
                        Released = Released.AddSeconds(0 - tDelta);
                    }
                }
                else
                {
                    Released = DateTime.ParseExact(ReleasedTxt, "MM/dd/yyyy", CultureInfo.InvariantCulture);
                }

                ChapterObject Chapter = new ChapterObject()
                {
                    Name      = HtmlEntity.DeEntitize(RawChapterNode.SelectSingleNode(".//div[1]/gray").InnerText),
                    Chapter   = UInt32.Parse(ChapterSub[0]),
                    Locations =
                    {
                        new LocationObject()
                        {
                            ExtensionName     = ExtensionDescriptionAttribute.Name,
                            ExtensionLanguage = ExtensionDescriptionAttribute.Language,
                            Url = ExtensionDescriptionAttribute.RootUrl + ChapterNumberNode.Attributes["href"].Value
                        },
                    },
                    Released = Released
                };
                if (ChapterSub.Length == 2)
                {
                    Chapter.SubChapter = UInt32.Parse(ChapterSub[1]);
                }
                Chapters.Add(Chapter);
            }
            Chapters.Reverse();
            MangaObject MangaObj = new MangaObject()
            {
                Name           = HtmlEntity.DeEntitize(MangaName),
                Description    = HtmlEntity.DeEntitize(Description),
                AlternateNames = AlternateNames.ToList(),
                CoverLocations = { new LocationObject()
                                   {
                                       Url               = Cover,
                                       ExtensionName     = ExtensionDescriptionAttribute.Name,
                                       ExtensionLanguage = ExtensionDescriptionAttribute.Language
                                   } },
                Authors  = AuthorsArtists.ToList(),
                Artists  = AuthorsArtists.ToList(),
                Genres   = Genres.ToList(),
                Released = Chapters.First().Released,
                Chapters = Chapters
            };

            MangaObj.AlternateNames.RemoveAll(an => an.ToLower().Equals("none"));
            MangaObj.Genres.RemoveAll(g => g.ToLower().Equals("none"));
            return(MangaObj);
        }
Esempio n. 7
0
        public DatabaseObject ParseDatabaseObject(String content)
        {
            HtmlDocument DatabaseObjectDocument = new HtmlDocument();

            DatabaseObjectDocument.LoadHtml(content);

            HtmlNode ContentNode     = DatabaseObjectDocument.GetElementbyId("content"),
                     InformationNode = ContentNode.SelectSingleNode(".//div[contains(@class,'subtabbox')]"),
                     CoverNode       = InformationNode.SelectSingleNode(".//div[2]/img"),
                     DetailsNode     = InformationNode.SelectSingleNode(".//table[contains(@class,'details')]"),
                     SummaryNode     = DatabaseObjectDocument.GetElementbyId("summary").SelectSingleNode(".//p"),
                     TagsNode        = DatabaseObjectDocument.GetElementbyId("tags").SelectSingleNode(".//p"),
                     LocationNode    = ContentNode.SelectSingleNode(".//div[contains(@class,'tab selected')]/a");

            String        Name           = InformationNode.SelectSingleNode(".//h1").InnerText;
            List <String> Genres         = (from String Tag in TagsNode.InnerText.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) select Tag.Trim()).ToList(),
                          AlternateNames = new List <String>(),
                          Staff          = new List <String>();
            Int32 ReleaseYear            = 0;

            LocationObject Location = new LocationObject()
            {
                ExtensionName     = ExtensionDescriptionAttribute.Name,
                ExtensionLanguage = ExtensionDescriptionAttribute.Language,
                Url = String.Format("{0}{1}", ExtensionDescriptionAttribute.RootUrl, LocationNode.Attributes["href"].Value),
            };

            foreach (HtmlNode DetailNode in DetailsNode.SelectNodes(".//tr"))
            {
                String DetailType         = DetailNode.SelectSingleNode(".//td[1]").InnerText.Trim().TrimEnd(':'),
                              DetailValue = DetailNode.SelectSingleNode(".//td[2]").InnerText.Trim();
                switch (DetailType)
                {
                default:
                case "":
                    break;

                case "Original title":
                case "Alternative Titles":
                    foreach (String value in DetailValue.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                    {
                        if (!AlternateNames.Contains(value))
                        {
                            AlternateNames.Add(HtmlEntity.DeEntitize(value));
                        }
                    }
                    break;

                case "Writer(s)":
                case "Artist(s)":
                    foreach (String value in DetailValue.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                    {
                        if (!Staff.Contains(value))
                        {
                            Staff.Add(HtmlEntity.DeEntitize(value));
                        }
                    }
                    break;

                case "Year":
                    Int32.TryParse(DetailValue, out ReleaseYear);
                    break;
                }
            }

            List <LocationObject> Covers = new List <LocationObject>();

            if (CoverNode != null)
            {
                Covers.Add(new LocationObject()
                {
                    Url               = String.Format("{0}{1}", ExtensionDescriptionAttribute.RootUrl, CoverNode.Attributes["src"].Value),
                    ExtensionName     = ExtensionDescriptionAttribute.Name,
                    ExtensionLanguage = ExtensionDescriptionAttribute.Language
                });
            }

            return(new DatabaseObject()
            {
                Name = HtmlEntity.DeEntitize(Name),
                AlternateNames = AlternateNames,
                Covers = Covers,
                Description = HtmlEntity.DeEntitize(SummaryNode.InnerText),
                Genres = Genres,
                Locations = { Location },
                Staff = Staff,
                ReleaseYear = ReleaseYear,
            });
        }