string GenerateAnchorElement(HtmlFile targetFile, PageTitle pageTitle) { string href = targetFile.Uri.AbsoluteUri; string element = String.Empty; if (PageTitle == PageTitle.TitleElement) { element = targetFile.TitleElement; } else if (PageTitle == PageTitle.H1Element) { element = targetFile.H1Element; } else if (PageTitle == PageTitle.FileName) { element = Regex.Match(targetFile.Uri.AbsoluteUri, @"(?<fname>[^/\\]*?)$", RegexOptions.Singleline).Value; if (element == "") { element = "(index)"; } } else { element = targetFile.Uri.AbsoluteUri; } return(string.Format("<a href=\"{0}\">{1}</a>", HttpUtility.HtmlEncode(href), HttpUtility.HtmlEncode(element))); }
private void ListUpUrls(Uri baseUri) { Queue <Uri> pending = new Queue <Uri>(); pending.Enqueue(baseUri); while (pending.Count > 0) { Uri currentUri = pending.Dequeue(); HtmlFile file = null; bw.ReportProgress(0, Resources.String3 + Environment.NewLine + currentUri.AbsolutePath); CheckCanceledOrNot(); try { file = new HtmlFile(currentUri); file.Fetch(FileEncoding, LastModification == LastModification.Server && GenerateXmlFile, FromLocalFiles, LocalPathInfo); if (LastModification == LastModification.Specified) { file.SavedDate = this.SpecifiedDate; } htmlFileList.Add(file); foreach (Uri newUri in file.GetLinkUrls()) { if (!htmlFileList.Exists(f => f.Uri.AbsoluteUri == newUri.AbsoluteUri) && !erroredFileUris.Exists(u => u.AbsoluteUri == newUri.AbsoluteUri) && !pending.Contains(newUri) && !MatchPattern(newUri.AbsolutePath, this.ExcludedPatternList) && newUri.AbsoluteUri.Contains(PathInfo.EliminateFileName(this.baseUrl.AbsoluteUri))) { pending.Enqueue(newUri); } } } catch (OperationCanceledException) { throw; } catch (Exception e) { if (IncludeNotFoundFiles && file != null) { htmlFileList.Add(file); } erroredFileUris.Add(currentUri); Logger.AddLog(e, currentUri.AbsolutePath); } } }
public static double CalculatePriority(HtmlFile file, int relativeDepth) { string fileName = Path.GetFileNameWithoutExtension(PathInfo.ExtractFileName(file.Uri.AbsoluteUri)); if (fileName.Equals("") || fileName.Equals("index", StringComparison.OrdinalIgnoreCase) || fileName.Equals("default", StringComparison.OrdinalIgnoreCase)) { return(Math.Max(1.0 - 0.1 * relativeDepth, 0.4)); } else { return(Math.Max(0.8 - 0.1 * relativeDepth, 0.4)); } }