public static Hashtable Parse(string strUrl, bool getPage, string strSearch) { Hashtable objResuls = new Hashtable(); try { string strResults; string strTemp; string coverlink = string.Empty; if (getPage == true) { strResults = Util.GetHtmlPage(strUrl, Encoding.Default); } else { strResults = strUrl; } objResuls.Add("Title", strSearch); objResuls.Add("Links", strUrl); if (string.IsNullOrEmpty(strResults)) { return(null); } #region Rating string strParsing = @"img_Rating"; int intTemp = strResults.IndexOf(strParsing, StringComparison.Ordinal); if (intTemp > -1) { strResults = strResults.Substring(intTemp + strParsing.Length); strParsing = @"Item_StudioProductionRating"; strResults = strResults.Substring(strResults.IndexOf(strParsing, StringComparison.Ordinal) + strParsing.Length); strParsing = @">"; strResults = strResults.Substring(strResults.IndexOf(strParsing, StringComparison.Ordinal) + strParsing.Length); strParsing = " out"; intTemp = strResults.IndexOf(strParsing, StringComparison.Ordinal); if (intTemp > -1) { string rating = strResults.Substring(0, intTemp).Trim(); decimal decRating; if (decimal.TryParse(rating, out decRating) == true) { decRating = decRating * 4; objResuls.Add("Rating", (int)decRating); } else { rating = rating.Replace('.', ','); if (decimal.TryParse(rating, out decRating) == true) { decRating = decRating * 4; objResuls.Add("Rating", (int)decRating); } } } } #endregion #region CoverUrl strParsing = @"Boxcover"; intTemp = strResults.IndexOf(strParsing, StringComparison.Ordinal); if (intTemp > -1) { strResults = strResults.Substring(intTemp + strParsing.Length); strParsing = @"href="""; strResults = strResults.Substring(strResults.IndexOf(strParsing, StringComparison.Ordinal) + strParsing.Length); strParsing = @""""; coverlink = strResults.Substring(0, strResults.IndexOf(strParsing, StringComparison.Ordinal)); } #endregion #region Description strParsing = @"Section Synopsis"; strResults = strResults.Substring(strResults.IndexOf(strParsing, StringComparison.Ordinal) + strParsing.Length); strParsing = @"Tagline"">"; int intBegin = strResults.IndexOf(strParsing, StringComparison.Ordinal); if (intBegin > -1) { strResults = strResults.Substring(intBegin + strParsing.Length); strParsing = @"</div"; objResuls.Add("Description", Util.PurgeHtml(strResults.Substring(0, strResults.IndexOf(strParsing, StringComparison.Ordinal)))); } else { strResults = strResults.Substring(intBegin + strParsing.Length); strParsing = @"</span>"; intBegin = strResults.IndexOf(strParsing, StringComparison.Ordinal); strResults = strResults.Substring(intBegin + strParsing.Length); strParsing = @"<"; intBegin = strResults.IndexOf(strParsing, StringComparison.Ordinal); if (intBegin > -1) { objResuls.Add("Description", Util.PurgeHtml(strResults.Substring(0, intBegin))); } } #endregion #region Runtime strParsing = @"Length</strong>"; intTemp = strResults.IndexOf(strParsing, StringComparison.Ordinal); if (intTemp > -1) { strResults = strResults.Substring(intTemp + strParsing.Length); strParsing = @"<"; strTemp = strResults.Substring(0, strResults.IndexOf(strParsing, StringComparison.Ordinal)); strParsing = "hrs."; intTemp = strResults.IndexOf(strParsing, StringComparison.Ordinal); int total = 0; if (intTemp > -1) { string strHour = strTemp.Substring(0, intTemp).Trim(); int hour; if (int.TryParse(strHour, out hour) == true) { total = hour * 60; } string strMin = strTemp.Substring(intTemp + strParsing.Length, strTemp.IndexOf("mins", StringComparison.Ordinal) - (intTemp + strParsing.Length)).Trim(); int min; if (int.TryParse(strMin, out min) == true) { total += min; } if (total > 0) { objResuls.Add("Runtime", total); } } } #endregion #region Released strParsing = @"Released</strong>"; strResults = strResults.Substring(strResults.IndexOf(strParsing, StringComparison.InvariantCulture) + strParsing.Length); strParsing = @"<"; strTemp = strResults.Substring(0, strResults.IndexOf(strParsing, StringComparison.InvariantCulture)).Trim(); DateTime date; if (DateTime.TryParse(strTemp, CultureInfo.CreateSpecificCulture("en-US"), DateTimeStyles.None, out date) == true) { objResuls.Add("Released", date); } #endregion #region Studio strParsing = @"Studio</strong>"; intBegin = strResults.IndexOf(strParsing, StringComparison.Ordinal); if (intBegin > -1) { strResults = strResults.Substring(intBegin + strParsing.Length); strParsing = @""">"; strResults = strResults.Substring(strResults.IndexOf(strParsing, StringComparison.Ordinal) + strParsing.Length); strParsing = @"<"; objResuls.Add("Studio", strResults.Substring(0, strResults.IndexOf(strParsing, StringComparison.Ordinal)).Trim()); } #endregion #region Actors strParsing = @"Section Cast"; intBegin = strResults.IndexOf(strParsing, StringComparison.Ordinal); if (intBegin > -1) { strResults = strResults.Substring(intBegin + strParsing.Length); strParsing = @"<li>"; string[] objTables = Regex.Split(strResults, strParsing); List <Artist> lstActors = new List <Artist>(); foreach (string item in objTables) { if (string.IsNullOrEmpty(item.Trim()) == false && item.StartsWith(@"<a href") == true && item.Contains("pornstars.html")) { strParsing = @"href="""; strTemp = item.Trim().Substring(item.IndexOf(strParsing, StringComparison.Ordinal) + strParsing.Length); strParsing = @""""; string url = strTemp.Substring(0, strTemp.IndexOf(strParsing, StringComparison.Ordinal)); strParsing = @">"; strTemp = strTemp.Substring(strTemp.IndexOf(strParsing, StringComparison.Ordinal) + strParsing.Length); strParsing = @"<"; string name = strTemp.Substring(0, strTemp.IndexOf(strParsing, StringComparison.Ordinal)); if (string.IsNullOrWhiteSpace(name) == false) { bool isNew; Artist artist = (ArtistServices.Get(name, out isNew)); lstActors.Add(artist); if (MySettings.FastSearch == false) { if (url.Contains("http:") == false) { url = "http://www.adultdvdempire.com" + url; } ArtistServices.Fill(ParsePortrait(url), artist, name); } } } } objResuls.Add("Actors", lstActors); } #endregion #region Genres strParsing = @"Section Categories"; intBegin = strResults.IndexOf(strParsing, StringComparison.Ordinal); if (intBegin > -1) { strResults = strResults.Substring(intBegin + strParsing.Length); strParsing = @"href="; string[] objTables = strResults.Split(new[] { strParsing }, StringSplitOptions.RemoveEmptyEntries); List <string> lstGenres = new List <string>(); foreach (string item in objTables) { if (item.Contains(@"/category/") && item.StartsWith("http:")) { strParsing = @">"; strTemp = item.Trim().Substring(item.IndexOf(strParsing, StringComparison.Ordinal) + strParsing.Length); strParsing = @"<"; strTemp = strTemp.Substring(0, strTemp.IndexOf(strParsing, StringComparison.Ordinal)); if (string.IsNullOrWhiteSpace(strTemp) == false) { lstGenres.Add(Util.PurgeHtml(strTemp)); } } } objResuls.Add("Genre", lstGenres); } #endregion #region Image if (string.IsNullOrWhiteSpace(coverlink) == false) { objResuls.Add("Image", coverlink); } #endregion #region Background if (string.IsNullOrWhiteSpace(coverlink) == false) { coverlink = coverlink.Replace("h.jpg", "bh.jpg"); objResuls.Add("Background", coverlink); } #endregion return(objResuls); } catch (Exception ex) { Util.LogException(ex, strUrl); return(null); } }