From 778a57b3b47b20fd25df17dee3ff48fb526e68bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristinn=20Sigur=C3=B0sson?= Date: Mon, 8 Jul 2024 13:05:56 +0000 Subject: [PATCH] Add a more general support for inferred path discovery --- .../modules/extractor/ExtractorHTTP.java | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorHTTP.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorHTTP.java index ab6f0bf6..effe83e2 100644 --- a/modules/src/main/java/org/archive/modules/extractor/ExtractorHTTP.java +++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorHTTP.java @@ -19,6 +19,9 @@ package org.archive.modules.extractor; +import java.util.ArrayList; +import java.util.List; + import org.apache.commons.httpclient.URIException; import org.archive.modules.CrawlURI; import org.archive.modules.CrawlURI.FetchType; @@ -39,15 +42,33 @@ public class ExtractorHTTP extends Extractor { } /** should all HTTP URIs be used to infer a link to the site's root? */ - protected boolean inferRootPage = false; + protected boolean inferRootPage = false; + /** + * @deprecated Deprecated in favor of {@link #getInferPaths()} which allows the specification of arbitrary + * paths and can be overridden with sheets. + */ public boolean getInferRootPage() { return inferRootPage; } + /** + * @deprecated Deprecated in favor of {@link #setInferPaths(List)} which allows the specification of arbitrary + * paths and can be overridden with sheets. + */ public void setInferRootPage(boolean inferRootPage) { this.inferRootPage = inferRootPage; } - + { + setInferPaths(new ArrayList<>()); + } + @SuppressWarnings("unchecked") + public List getInferPaths() { + return (List) kp.get("inferPaths"); + } + public void setInferPaths(List inferPaths) { + kp.put("inferPaths", inferPaths); + } + @Override protected boolean shouldProcess(CrawlURI uri) { if (uri.getFetchStatus() <= 0) { @@ -67,9 +88,12 @@ public class ExtractorHTTP extends Extractor { // try /favicon.ico for every HTTP(S) URI addOutlink(curi, "/favicon.ico", LinkContext.INFERRED_MISC, Hop.INFERRED); - if(getInferRootPage()) { + if (getInferRootPage()) { addOutlink(curi, "/", LinkContext.INFERRED_MISC, Hop.INFERRED); } + for (String inferPath : getInferPaths()) { + addOutlink(curi, inferPath, LinkContext.INFERRED_MISC, Hop.INFERRED); + } } protected void addRefreshHeaderLink(CrawlURI curi, String headerKey) {