//it get all the images and generate the images based of html data that is in boxarts folder
        //also this method creates a json that have an array of objects that containes the following format
        // [{<normalized name>:<libretroportraits portrait name>}]
        public static void CompileImages()
        {
            if (!Directory.Exists("Boxartslist"))
            {
                Directory.CreateDirectory("Boxartslist");
            }

            foreach (var consoleKey in ConsolesConstants.ConsoleSlugs.Keys)
            {
                Dictionary <string, string> InnerList = new Dictionary <string, string>();
                var arch  = File.ReadAllText("../../../BoxartsInfos/" + ConsolesConstants.ThumbnailsConsoles[consoleKey] + ".txt");
                var names = arch.Split("\n");
                foreach (var name in names)
                {
                    var currentname    = name.Replace("\r", "");
                    var normalizedname = ExtractionHelpers.NormalizeName(Path.GetFileNameWithoutExtension(currentname));
                    if (!InnerList.ContainsKey(normalizedname))
                    {
                        InnerList.Add(normalizedname, currentname);
                    }

                    var outputFile = File.CreateText("Boxartslist/" + ConsolesConstants.ConsoleSlugs[consoleKey] + ".json");
                    outputFile.Write(JsonConvert.SerializeObject(InnerList));
                    outputFile.Close();
                }
                Console.WriteLine(ConsolesConstants.ConsoleSlugs[consoleKey] + " portraits extracted!");
            }
        }
Example #2
0
        public List <RomData> GetRomsData(int console, Dictionary <string, string> imageMap = null)
        {
            List <RomData> InnerList = new List <RomData>();

            if (imageMap == null)
            {
                imageMap = new Dictionary <string, string>();
            }


            var document   = new HtmlWeb();
            var html       = document.LoadFromWebAsync(GetBasePath() + GetConsolesLinks()[Convert.ToInt32(console)]).Result;
            var container  = html.DocumentNode.Descendants().Where(ax => ax.Name == "tbody").ToList();
            var children   = container[0].ChildNodes.Where((node) => node.Name == "tr").ToList();
            int foundCount = 0;

            foreach (var child in children)
            {
                var romCols = child.ChildNodes.Where(ax => ax.Name == "td").ToList();
                if (romCols.Count > 0)
                {
                    var nameRow = romCols[0];
                    var sizeRow = romCols[1];
                    if (!ExtractionHelpers.IsNameValid(nameRow.InnerText))
                    {
                        continue;
                    }
                    var    linkElement = nameRow.ChildNodes.Where(ax => ax.Name == "a").First();
                    var    link        = linkElement.Attributes["href"].Value;
                    var    name        = ExtractionHelpers.ExtractName(link, console);
                    var    thumbnail   = ExtractionHelpers.ExtractThumbnail(console, name, imageMap);
                    string region      = ExtractionHelpers.ExtractRegion(name);
                    if (thumbnail != null)
                    {
                        foundCount++;
                        InnerList.Add(new RomData
                        {
                            Console = ((Enums.Consoles)console).ToString().Replace('_', ' '),

                            Name     = name,
                            Portrait = thumbnail,
                            Region   = region
                        });
                    }
                }
            }
            Console.WriteLine(foundCount + " Portraits found of " + children.Count + " Roms   -> " + (children.Count - foundCount) + "Portraits not found");
            return(InnerList);
        }
        public List <RomData> GetRomsData(int consoleCode, Dictionary <string, string> imageMap = null)
        {
            List <string>  unmatch   = new List <string>();
            List <RomData> InnerList = new List <RomData>();

            if (imageMap == null)
            {
                imageMap = new Dictionary <string, string>();
            }
            var document    = new HtmlWeb();
            var url         = GetBasePath() + GetConsolesLinks()[Convert.ToInt32(consoleCode)];
            var html        = document.LoadFromWebAsync(url).Result;
            var container   = html.DocumentNode.Descendants().Where(ax => ax.Name == "pre").ToList();
            var children    = container[0].ChildNodes;
            var anchorTexts = children.Where(ax => ax.Name == "a").ToList();
            var infoTexts   = children.Where(ax => ax.Name == "#text").ToList();
            int foundCount  = 0;

            for (int i = 0; i < anchorTexts.Count; i++)
            {
                string name = ExtractionHelpers.ClearName(Path.GetFileNameWithoutExtension(anchorTexts[i].Attributes["href"].Value), consoleCode);
                if (!ExtractionHelpers.IsNameValid(name))
                {
                    continue;
                }
                string portrait       = ExtractionHelpers.ExtractThumbnail(consoleCode, name, imageMap);
                string region         = ExtractionHelpers.ExtractRegion(name);
                string infolink       = Constants.InfoRepoBaseUrl + ConsolesConstants.ConsoleSlugs[consoleCode] + "/" + name.Trim() + ".json";
                string romSize        = ExtractionHelpers.ExtractSize(infoTexts[i].InnerText);
                string romDownloadUrl = anchorTexts[i].Attributes["href"].Value;
                if (!infolink.EndsWith("/") && name.Trim() != "" && !infolink.StartsWith(".") && !infolink.EndsWith(".txt") && portrait != null)
                {
                    foundCount++;
                    InnerList.Add(new RomData
                    {
                        Name         = name,
                        Portrait     = portrait,
                        Region       = region,
                        DownloadLink = url + romDownloadUrl,
                        Console      = ((Enums.Consoles)consoleCode).ToString().Replace('_', ' '),
                        Size         = romSize
                    });
                }
            }
            Console.WriteLine(foundCount + " Portraits found of " + anchorTexts.Count + "   " + (anchorTexts.Count - foundCount) + "Portraits not found");
            return(InnerList);
        }