RomInformation IRomInfoNetCrawler.ScanRomInfo(RomInformation pRomInfo) { RomInformation lreslut = new RomInformation(); string lWebSoruce = ""; if (_BufferCrawleredSubSerial == pRomInfo.BasicInfo.SubSerial) { lWebSoruce = _BufferCrawleredUrl; } else { lWebSoruce = BQWeb.DownloadWebHtml(URL3dsdb + pRomInfo.BasicInfo.SubSerial); lWebSoruce = lWebSoruce.Replace("\n", ""); lWebSoruce = lWebSoruce.Replace("\r", ""); _BufferCrawleredUrl = lWebSoruce; } lWebSoruce = lWebSoruce.Replace("<tr><td", "</td></tr><tr><td"); Match lResult = lRegexInfo.Match(lWebSoruce); if (lResult.Success == false) { return(lreslut); } string lRomInfo = lResult.Groups["body"].Value.ToString(); MatchCollection lMatchCollection = lRegextd.Matches(lRomInfo); if (lMatchCollection.Count <= 0) { return(lreslut); } List <string> lTrList = new List <string>(); foreach (Match match in lMatchCollection) { GroupCollection gc = match.Groups; lTrList.Add(gc["tdValue"].ToString()); } Romgamedb3dsInfo romgamedb3DsInfo = new Romgamedb3dsInfo(); string tPropName = ""; bool tFindProp = false; foreach (var gameInfo in lTrList) { if (gameInfo == "") { continue; } tFindProp = false; foreach (var item in romgamedb3DsInfo.GetType().GetProperties()) { string prpname = item.Name; prpname = prpname.Replace("_1", " ("); prpname = prpname.Replace("_2", ")"); prpname = prpname.Replace("_3", " "); prpname = prpname.Replace("_4", "."); prpname = prpname.Replace("__", ""); if (gameInfo.ToLower() == prpname.ToLower()) { tFindProp = true; tPropName = item.Name; break; } } if (tFindProp) { continue; } if (tPropName != "") { string value = lRegextdDummy.Replace(gameInfo, ""); romgamedb3DsInfo.GetType().GetProperty(tPropName).SetValue(romgamedb3DsInfo, value); tPropName = ""; tFindProp = false; } } lreslut.BasicInfo.English_Title = romgamedb3DsInfo.title_1EN_2; lreslut.BasicInfo.Japanese_Title = romgamedb3DsInfo.title_1JA_2; lreslut.BasicInfo.Developer = romgamedb3DsInfo.developer; lreslut.BasicInfo.Players = romgamedb3DsInfo.players; lreslut.BasicInfo.ReleaseDate = romgamedb3DsInfo.release_3date; lreslut.BasicInfo.Publisher = romgamedb3DsInfo.publisher; lreslut.BasicInfo.Languages = romgamedb3DsInfo.languages; lreslut.BasicInfo.Genre = romgamedb3DsInfo.genre; return(lreslut); }
private Romgamedb3dsInfo GetGameInfo(string pGameSerial) { string lWebSoruce = BQWeb.DownloadWebHtml(URL3dsdb + pGameSerial); lWebSoruce = lWebSoruce.Replace("\n", ""); lWebSoruce = lWebSoruce.Replace("\r", ""); lWebSoruce = lWebSoruce.Replace("<tr><td", "</td></tr><tr><td"); Regex lRegexInfo = new Regex(@"(<\s*?table\s*?class\s*?=\s*?'DQedit'\s*?>)(?<body>.*)(<\/\s*table>)"); // <tr>???</tr> //Regex lRegextr = new Regex(@"(<\s*?tr\s*?>)(?<tr>.*?)(<\/\s*?tr\s*?>)"); // <td>???</td> Regex lRegextd = new Regex(@"<\s*?td.*?>(?<tdValue>.*?)<\/\s*?td\s*?>"); Regex lRegextdValue = new Regex(@"(>)(?<value>.*)(<)"); Regex lRegextdDummy = new Regex(@"(<).*(>)"); // <td class='head' align='right' width='110' valign='top'>??</td> //Regex lRegextdHead = new Regex(@"(<)\s*(td)\s+(class)\s*(=)\s*('head')\s+(align)\s*(=)\s*('right')\s+.+(valign)\s*(=)\s*('top')\s*(>)(?<tdValue>.*)(<)(\/)\s*(td)\s*(>)"); //Regex lRegextdValue = new Regex(@"(<)\s*(td)\s+(align)\s*(=)\s*('right')\s+.+(valign)\s*(=)\s*('top')\s*(>)(?<tdValue>.*)(<)(\/)\s*(td)\s*(>)"); Match lResult = lRegexInfo.Match(lWebSoruce); if (lResult.Success == false) { return(null); } string lRomInfo = lResult.Groups["body"].Value.ToString(); MatchCollection lMatchCollection = lRegextd.Matches(lRomInfo); if (lMatchCollection.Count <= 0) { return(null); } List <string> lTrList = new List <string>(); foreach (Match match in lMatchCollection) { GroupCollection gc = match.Groups; lTrList.Add(gc["tdValue"].ToString()); } Romgamedb3dsInfo romgamedb3DsInfo = new Romgamedb3dsInfo(); string tPropName = ""; bool tFindProp = false; foreach (var gameInfo in lTrList) { if (gameInfo == "") { continue; } tFindProp = false; foreach (var item in romgamedb3DsInfo.GetType().GetProperties()) { string prpname = item.Name; prpname = prpname.Replace("_1", " ("); prpname = prpname.Replace("_2", ")"); prpname = prpname.Replace("_3", " "); prpname = prpname.Replace("_4", "."); prpname = prpname.Replace("__", ""); if (gameInfo.ToLower() == prpname.ToLower()) { tFindProp = true; tPropName = item.Name; break; } } if (tFindProp) { continue; } if (tPropName != "") { string value = lRegextdDummy.Replace(gameInfo, ""); romgamedb3DsInfo.GetType().GetProperty(tPropName).SetValue(romgamedb3DsInfo, value); tPropName = ""; tFindProp = false; } } return(romgamedb3DsInfo); }