From 3532127071b11631d6f226f5171ce25f1e99d61c Mon Sep 17 00:00:00 2001 From: vtempest <1274452+vtempest@users.noreply.github.com> Date: Sat, 7 Sep 2024 17:01:25 -0700 Subject: [PATCH] added UMAP dimensionality reduction, HNSW vector earch, with test demos. exractors modularized (readabilty, psotlight) --- .github/workflows/static.yml | 14 +- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- .../src_extract_content_core.Document.html | 23 - .../src_extract_content_core.Extractor.html | 25 - ...act_content_courlan_urlstore.UrlStore.html | 42 - ...xtract_content_deduplication.LRUCache.html | 10 - ...extract_content_deduplication.Simhash.html | 14 - ...rc_extract_content_downloads.Response.html | 13 - ...src_extract_content_settings.Document.html | 30 - ...rc_extract_content_settings.Extractor.html | 27 - ...xtract_content_spider.CrawlParameters.html | 19 - ...c_trafilatura_extractor_core.Document.html | 23 + ..._trafilatura_extractor_core.Extractor.html | 25 + ...a_extractor_courlan_urlstore.UrlStore.html | 42 + ...tura_extractor_deduplication.LRUCache.html | 10 + ...atura_extractor_deduplication.Simhash.html | 14 + ...filatura_extractor_downloads.Response.html | 13 + ...ra_extractor_readability.Readability.html} | 325 +- ...afilatura_extractor_settings.Document.html | 30 + ...filatura_extractor_settings.Extractor.html | 27 + ...tura_extractor_spider.CrawlParameters.html | 19 + ...tocomplete.suggestNextWordCompletions.html | 4 +- ...n_allow_cors.modifyChromeAPIAllowCORS.html | 4 +- ...compile_topic_model.compileTopicModel.html | 4 +- ...topic_model.weightWikiWordSpecificity.html | 2 +- ...press_json_jz64.compressBase64ZipText.html | 7 +- ...rt_dictionary_import.importDictionary.html | 2 +- ...t_human_names_import.importHumanNames.html | 2 +- ...ed_typos_import.importMisspelledTypos.html | 2 +- ...port_quora_import.importCommonQueries.html | 2 +- ..._frequency_import.importTermFrequency.html | 2 +- ...ge_titles_import.importWikiPageTitles.html | 2 +- ...src_extract_content_baseline.baseline.html | 4 - ...xtract_content_baseline.basicCleaning.html | 4 - ...src_extract_content_baseline.loadHtml.html | 4 - .../src_extract_content_baseline.trim.html | 4 - ...c_extract_content_core.bareExtraction.html | 4 - .../src_extract_content_core.extract.html | 4 - ...ract_content_courlan_clean.cleanQuery.html | 11 - ...xtract_content_courlan_clean.cleanUrl.html | 10 - ..._content_courlan_clean.decodePunycode.html | 9 - ...ntent_courlan_clean.normalizeFragment.html | 10 - ...t_content_courlan_clean.normalizePart.html | 9 - ...ct_content_courlan_clean.normalizeUrl.html | 12 - ...xtract_content_courlan_clean.scrubUrl.html | 9 - ...t_content_courlan_filters.basicFilter.html | 9 - ..._content_courlan_filters.domainFilter.html | 9 - ...ntent_courlan_filters.extensionFilter.html | 9 - ...tent_courlan_filters.isNavigationPage.html | 9 - ...ontent_courlan_filters.isNotCrawlable.html | 9 - ...ct_content_courlan_filters.isValidUrl.html | 9 - ...ct_content_courlan_filters.langFilter.html | 12 - ...ct_content_courlan_filters.pathFilter.html | 10 - ...ct_content_courlan_filters.typeFilter.html | 11 - ...t_content_courlan_filters.validateUrl.html | 9 - ...extract_content_courlan_meta.addCache.html | 6 - ...ract_content_courlan_meta.clearCaches.html | 6 - ...ntent_courlan_network.redirectionTest.html | 12 - ...ontent_courlan_urlutils.extractDomain.html | 11 - ...t_content_courlan_urlutils.filterUrls.html | 10 - ...t_content_courlan_urlutils.getBaseUrl.html | 9 - ...ntent_courlan_urlutils.getHostAndPath.html | 9 - ..._content_courlan_urlutils.getHostinfo.html | 9 - ...t_content_courlan_urlutils.getTldinfo.html | 10 - ...t_content_courlan_urlutils.isExternal.html | 11 - ..._content_courlan_urlutils.isKnownLink.html | 10 - ...tent_deduplication.contentFingerprint.html | 4 - ...content_deduplication.isSimilarDomain.html | 4 - ...content_downloads.addToCompressedDict.html | 4 - ...t_content_downloads.bufferedDownloads.html | 4 - ...tract_content_downloads.fetchResponse.html | 4 - ...rc_extract_content_downloads.fetchUrl.html | 4 - ..._content_downloads.loadDownloadBuffer.html | 4 - ...ct_content_external.compareExtraction.html | 4 - ...xtract_content_external.justextRescue.html | 4 - ...extract_content_external.sanitizeTree.html | 4 - ...rc_extract_content_feeds.findFeedUrls.html | 4 - ...src_extract_content_feeds.tryHomepage.html | 4 - ...ontent_htmlprocessing.buildHtmlOutput.html | 4 - ...ontent_htmlprocessing.collectLinkInfo.html | 4 - ...ntent_htmlprocessing.convertDeletions.html | 4 - ...content_htmlprocessing.convertDetails.html | 4 - ...t_content_htmlprocessing.convertLists.html | 4 - ..._content_htmlprocessing.convertQuotes.html | 4 - ..._content_htmlprocessing.convertToHtml.html | 4 - ...nt_htmlprocessing.deleteByLinkDensity.html | 4 - ...ontent_htmlprocessing.linkDensityTest.html | 4 - ..._htmlprocessing.linkDensityTestTables.html | 4 - ...ract_content_htmlprocessing.pruneHtml.html | 4 - ...ent_htmlprocessing.pruneUnwantedNodes.html | 4 - ...t_content_htmlprocessing.treeCleaning.html | 4 - ...act_content_json_metadata.extractJson.html | 4 - ...t_json_metadata.extractJsonParseError.html | 4 - ...ontent_json_metadata.normalizeAuthors.html | 4 - ...ontent_main_extractor.extractComments.html | 4 - ...content_main_extractor.extractContent.html | 4 - .../src_extract_content_meta.resetCaches.html | 4 - ...ract_content_metadata.extractMetadata.html | 4 - ...ract_content_settings.argsToExtractor.html | 4 - ...ontent_sitemaps.extractRobotsSitemaps.html | 4 - ...t_content_sitemaps.findRobotsSitemaps.html | 4 - ...t_content_sitemaps.isPlausibleSitemap.html | 4 - ...xtract_content_sitemaps.sitemapSearch.html | 4 - ...extract_content_spider.focusedCrawler.html | 4 - ...xtract_content_utils.controlXmlOutput.html | 4 - ...c_extract_content_utils.deleteElement.html | 4 - ...extract_content_utils.mergeWithParent.html | 4 - ...act_content_utils.removeEmptyElements.html | 4 - ...extract_content_utils.stripDoubleTags.html | 4 - .../src_extract_content_utils.textfilter.html | 4 - .../src_extract_content_utils.trim.html | 4 - .../src_extract_content_utils.xmlToTxt.html | 4 - ...c_extract_content_xml.buildJsonOutput.html | 4 - ...rc_extract_content_xml.buildTeiOutput.html | 4 - .../src_extract_content_xml.checkTei.html | 4 - ...src_extract_content_xml.deleteElement.html | 4 - ...tract_content_xml.removeEmptyElements.html | 4 - ..._to_cite_extract_author.extractAuthor.html | 2 +- ...html_to_cite_extract_cite.extractCite.html | 2 +- ...html_to_cite_extract_date.extractDate.html | 2 +- ..._to_cite_extract_source.extractSource.html | 2 +- ...ml_to_cite_extract_title.extractTitle.html | 2 +- ...an_names_recognize.extractNamedEntity.html | 2 +- ...adata_to_cite.extractCiteFromMetadata.html | 2 +- ...cite_url_to_domain.convertURLToDomain.html | 2 +- ...to_cite_url_to_favicon.extractFavicon.html | 4 +- ...nt_extract_content.extractMainContent.html | 77 - ...extractor1_content.extractContentHTML.html | 77 + ...xtractor2_content.extractContentHTML2.html | 41 + ...special_chars.convertHTMLSpecialChars.html | 6 +- ...nt_html_to_basic_html.addDOMFunctions.html | 2 +- ..._to_basic_html.convertHTMLToBasicHTML.html | 10 +- ...ontent_html_to_content.extractContent.html | 6 - ...html_to_content.extractContentAndCite.html | 14 + ...ntent_readability2.extractContentHTML.html | 24 - ...tent_pdf_to_content.convertPDFToHTML.html} | 9 +- ...rl_to_content_pdf_to_content.isUrlPDF.html | 2 +- ...r_url_to_content_scrape_url.scrapeURL.html | 10 +- ...url_to_content_url_to_content.extract.html | 7 +- ...tent_youtube_embed.embedYoutubePlayer.html | 2 +- ...nt_youtube_to_text.extractYoutubeText.html | 7 +- ...ings_to_graph.convertEmbeddingsToHNSW.html | 15 + ...ings_to_graph.convertEmbeddingsToUMAP.html | 13 + ...to_graph.convertTextToEmbeddingVector.html | 17 + ..._embeddings_to_graph.cosineSimilarity.html | 4 + ..._embeddings_to_graph.getAllEmbeddings.html | 8 + ...eddings_to_graph.getEmbeddingPipeline.html | 6 + ...h_embeddings_to_graph.searchWithQuery.html | 4 + ...e_hnsw.convertEmbeddingsIndexToBase64.html | 10 + ...etters.calculateSimilarityByCharacter.html | 2 +- .../src_match_match_quasar.matchQUASAR.html | 8 +- ...h_softmax.calculateProbabilitySoftmax.html | 5 +- ..._frequency.calculatePhraseSpecificity.html | 2 +- ...frequency.weighRelevanceTermFrequency.html | 4 +- ...search_web_search_stream.searchSTREAM.html | 16 +- .../src_search_web_search_web.searchWeb.html | 7 +- ..._web_search_wikipedia.searchWikipedia.html | 4 +- ...larity_concept.vectorizeTextAsConcept.html | 16 - ...y_concept.weighRelevanceConceptVector.html | 7 +- ...oncept.weighRelevanceConceptVectorAPI.html | 7 +- ...src_tokenize_sentences.splitSentences.html | 7 +- ...okenize_stopwords.isWordCommonIgnored.html | 2 +- ...text_to_chunks.splitTextSemanticChars.html | 2 +- ...kenize_tokenize_topics.tokenizeTopics.html | 7 +- ...rd_to_root_stem.convertWordToRootStem.html | 2 +- ...ution.weighTopicDirichletDistribution.html | 4 +- ...rc_topics_ngrams.extractNounEdgeGrams.html | 2 +- ...rases.rankSentencesCentralToKeyphrase.html | 2 +- ...seektopic_keyphrases.extractSEEKTOPIC.html | 4 +- ...afilatura_extractor_baseline.baseline.html | 4 + ...tura_extractor_baseline.basicCleaning.html | 4 + ...afilatura_extractor_baseline.html2txt.html | 4 + ...afilatura_extractor_baseline.loadHtml.html | 4 + ...c_trafilatura_extractor_baseline.trim.html | 4 + ...latura_extractor_core.bareExtraction.html} | 2 +- ...rc_trafilatura_extractor_core.extract.html | 4 + ...ra_extractor_courlan_clean.cleanQuery.html | 11 + ...tura_extractor_courlan_clean.cleanUrl.html | 10 + ...xtractor_courlan_clean.decodePunycode.html | 9 + ...actor_courlan_clean.normalizeFragment.html | 10 + ...extractor_courlan_clean.normalizePart.html | 9 + ..._extractor_courlan_clean.normalizeUrl.html | 12 + ...tura_extractor_courlan_clean.scrubUrl.html | 9 + ...tura_extractor_courlan_core.checkUrl.html} | 4 +- ..._extractor_courlan_core.extractLinks.html} | 4 +- ...a_extractor_courlan_core.filterLinks.html} | 4 +- ...extractor_courlan_filters.basicFilter.html | 9 + ...xtractor_courlan_filters.domainFilter.html | 9 + ...actor_courlan_filters.extensionFilter.html | 9 + ...ctor_courlan_filters.isNavigationPage.html | 9 + ...ractor_courlan_filters.isNotCrawlable.html | 9 + ...extractor_courlan_filters.isValidUrl.html} | 7 +- ..._extractor_courlan_filters.langFilter.html | 12 + ..._extractor_courlan_filters.pathFilter.html | 10 + ..._extractor_courlan_filters.typeFilter.html | 11 + ...extractor_courlan_filters.validateUrl.html | 9 + ...tura_extractor_courlan_meta.addCache.html} | 4 +- ...ra_extractor_courlan_meta.clearCaches.html | 6 + ...actor_courlan_network.redirectionTest.html | 12 + ...xtractor_courlan_sampling.sampleUrls.html} | 4 +- ...actor_courlan_urlutils.extractDomain.html} | 9 +- ...extractor_courlan_urlutils.filterUrls.html | 10 + ...ctor_courlan_urlutils.fixRelativeUrls.html | 10 + ...extractor_courlan_urlutils.getBaseUrl.html | 9 + ...actor_courlan_urlutils.getHostAndPath.html | 9 + ...xtractor_courlan_urlutils.getHostinfo.html | 9 + ...extractor_courlan_urlutils.getTldinfo.html | 10 + ...extractor_courlan_urlutils.isExternal.html | 11 + ...xtractor_courlan_urlutils.isKnownLink.html | 10 + ...ctor_deduplication.contentFingerprint.html | 4 + ...extractor_deduplication.duplicateTest.html | 4 + ...tractor_deduplication.generateBowHash.html | 4 + ...tractor_deduplication.isSimilarDomain.html | 4 + ...tractor_downloads.addToCompressedDict.html | 4 + ...extractor_downloads.bufferedDownloads.html | 4 + ...ura_extractor_downloads.fetchResponse.html | 4 + ...filatura_extractor_downloads.fetchUrl.html | 4 + ...xtractor_downloads.loadDownloadBuffer.html | 4 + ..._extractor_external.compareExtraction.html | 4 + ...tura_extractor_external.justextRescue.html | 4 + ...atura_extractor_external.sanitizeTree.html | 4 + ...ilatura_extractor_feeds.findFeedUrls.html} | 2 +- ...filatura_extractor_feeds.tryHomepage.html} | 2 +- ...special_chars.convertHTMLSpecialChars.html | 13 + ...ractor_htmlprocessing.buildHtmlOutput.html | 4 + ...actor_htmlprocessing.collectLinkInfo.html} | 2 +- ...actor_htmlprocessing.convertDeletions.html | 4 + ...tractor_htmlprocessing.convertDetails.html | 4 + ...actor_htmlprocessing.convertHeadings.html} | 8 +- ...ctor_htmlprocessing.convertLineBreaks.html | 4 + ...xtractor_htmlprocessing.convertLists.html} | 2 +- ...xtractor_htmlprocessing.convertQuotes.html | 4 + ..._extractor_htmlprocessing.convertTags.html | 4 + ...xtractor_htmlprocessing.convertToHtml.html | 4 + ...or_htmlprocessing.deleteByLinkDensity.html | 4 + ...ractor_htmlprocessing.handleTextnode.html} | 2 +- ...ractor_htmlprocessing.linkDensityTest.html | 4 + ..._htmlprocessing.linkDensityTestTables.html | 4 + ..._extractor_htmlprocessing.processNode.html | 4 + ...ra_extractor_htmlprocessing.pruneHtml.html | 4 + ...or_htmlprocessing.pruneUnwantedNodes.html} | 2 +- ...extractor_htmlprocessing.treeCleaning.html | 4 + ..._extractor_json_metadata.extractJson.html} | 2 +- ...r_json_metadata.extractJsonParseError.html | 4 + ...ractor_json_metadata.normalizeAuthors.html | 4 + ...extractor_json_metadata.normalizeJson.html | 4 + ...actor_main_extractor.extractComments.html} | 2 +- ...tractor_main_extractor.extractContent.html | 4 + ...rafilatura_extractor_meta.resetCaches.html | 4 + ...ra_extractor_metadata.extractMetadata.html | 4 + ...r_readability_lxml.extractContentHTML.html | 4 + ...a_extractor_settings.argsToExtractor.html} | 2 +- ...tura_extractor_settings.setDateParams.html | 4 + ...ractor_sitemaps.extractRobotsSitemaps.html | 4 + ...extractor_sitemaps.findRobotsSitemaps.html | 4 + ...extractor_sitemaps.isPlausibleSitemap.html | 4 + ...ura_extractor_sitemaps.sitemapSearch.html} | 2 +- ...atura_extractor_spider.focusedCrawler.html | 4 + ...tura_extractor_utils.buildJsonOutput.html} | 2 +- ...atura_extractor_utils.buildTeiOutput.html} | 2 +- ...latura_extractor_utils.buildXmlOutput.html | 4 + ..._trafilatura_extractor_utils.checkTei.html | 4 + ...tura_extractor_utils.controlXmlOutput.html | 4 + ...latura_extractor_utils.deleteElement.html} | 2 +- ...tura_extractor_utils.mergeWithParent.html} | 2 +- ...ura_extractor_utils.normalizeUnicode.html} | 2 +- ...a_extractor_utils.removeEmptyElements.html | 4 + ...tura_extractor_utils.stripDoubleTags.html} | 2 +- ...ilatura_extractor_utils.textCharsTest.html | 4 + ...rafilatura_extractor_utils.textfilter.html | 4 + .../src_trafilatura_extractor_utils.trim.html | 4 + ...atura_extractor_utils.writeFullheader.html | 4 + ...filatura_extractor_utils.writeTeitree.html | 4 + ...trafilatura_extractor_utils.xmlToTxt.html} | 2 +- ...ilatura_extractor_xml.buildJsonOutput.html | 4 + ...ilatura_extractor_xml.buildTeiOutput.html} | 2 +- ...filatura_extractor_xml.buildXmlOutput.html | 4 + ...rc_trafilatura_extractor_xml.checkTei.html | 4 + ...latura_extractor_xml.controlXmlOutput.html | 4 + ...afilatura_extractor_xml.deleteElement.html | 4 + ...ilatura_extractor_xml.mergeWithParent.html | 4 + ...ura_extractor_xml.removeEmptyElements.html | 4 + ...ilatura_extractor_xml.stripDoubleTags.html | 4 + docs/index.html | 48 +- ...te_human_names_recognize.AuthorObject.html | 8 +- ...tent_html_to_content.ExtractedContent.html | 18 + ...url_to_content_url_to_content.Article.html | 24 +- ...o_content_youtube_embed.YouTubePlayer.html | 74 +- ...aph_embeddings_to_graph.PlotDataPoint.html | 10 + .../src_tokenize_tokenize_topics.Token.html | 8 +- docs/modules/index.html | 14 +- .../src_autocomplete_autocomplete.html | 2 +- .../src_chrome_extension_allow_cors.html | 2 +- ...rc_dataset_import_compile_topic_model.html | 2 +- ...src_dataset_import_compress_json_jz64.html | 2 +- .../src_dataset_import_dictionary_import.html | 2 +- ...src_dataset_import_human_names_import.html | 2 +- .../src_dataset_import_metadata_stats.html | 2 +- ...ataset_import_misspelled_typos_import.html | 2 +- .../src_dataset_import_quora_import.html | 2 +- ..._dataset_import_term_frequency_import.html | 2 +- ...dataset_import_wikipage_titles_import.html | 2 +- .../modules/src_extract_content_baseline.html | 9 - docs/modules/src_extract_content_core.html | 8 - .../src_extract_content_courlan-1.html | 31 - docs/modules/src_extract_content_courlan.html | 31 - .../src_extract_content_courlan_clean.html | 11 - .../src_extract_content_courlan_filters.html | 14 - .../src_extract_content_courlan_settings.html | 8 - .../src_extract_content_courlan_urlutils.html | 13 - .../src_extract_content_deduplication.html | 10 - .../src_extract_content_htmldate-1.html | 5 - .../src_extract_content_htmldate.export_.html | 4 - .../src_extract_content_htmldate_core.html | 15 - ...c_extract_content_htmldate_extractors.html | 25 - .../src_extract_content_htmldate_meta.html | 5 - ...src_extract_content_htmldate_settings.html | 9 - .../src_extract_content_htmldate_utils.html | 16 - ...c_extract_content_htmldate_validators.html | 14 - .../src_extract_content_json_metadata.html | 8 - .../src_extract_content_readability_lxml.html | 5 - .../modules/src_extract_content_settings.html | 23 - .../modules/src_extract_content_sitemaps.html | 8 - docs/modules/src_extract_content_spider.html | 7 - docs/modules/src_extract_content_utils.html | 18 - docs/modules/src_extract_content_xml.html | 13 - docs/modules/src_extract_content_xpaths.html | 17 - ...extractor_html_to_cite_extract_author.html | 2 +- ...c_extractor_html_to_cite_extract_cite.html | 2 +- ...c_extractor_html_to_cite_extract_date.html | 2 +- ...extractor_html_to_cite_extract_source.html | 2 +- ..._extractor_html_to_cite_extract_title.html | 2 +- ...or_html_to_cite_human_names_recognize.html | 2 +- ...tractor_html_to_cite_metadata_to_cite.html | 2 +- ..._extractor_html_to_cite_url_to_domain.html | 2 +- ...extractor_html_to_cite_url_to_favicon.html | 2 +- ...actor_html_to_content_extract_content.html | 5 - ...t_extract_content_extractor1_content.html} | 3 +- ...nt_extract_content_extractor2_content.html | 5 + ...act_content_extractor2_content_utils.html} | 2 +- ...or_html_to_content_html_special_chars.html | 2 +- ...or_html_to_content_html_to_basic_html.html | 2 +- ...actor_html_to_content_html_to_content.html | 3 +- ...tractor_url_to_content_pdf_to_content.html | 2 +- ...c_extractor_url_to_content_scrape_url.html | 2 +- ...tractor_url_to_content_url_to_content.html | 2 +- ...xtractor_url_to_content_youtube_embed.html | 2 +- ...ractor_url_to_content_youtube_to_text.html | 2 +- .../src_graph_embeddings_to_graph.html | 12 + ...ent_meta.html => src_graph_save_hnsw.html} | 2 +- docs/modules/src_match_compare_letters.html | 2 +- docs/modules/src_match_match_quasar.html | 2 +- docs/modules/src_match_softmax.html | 2 +- .../src_match_weigh_relevance_frequency.html | 2 +- .../modules/src_search_web_search_stream.html | 2 +- docs/modules/src_search_web_search_web.html | 2 +- .../src_search_web_search_wikipedia.html | 2 +- .../src_similarity_similarity_concept.html | 3 +- docs/modules/src_tokenize_sentences.html | 2 +- docs/modules/src_tokenize_stopwords.html | 2 +- docs/modules/src_tokenize_text_to_chunks.html | 2 +- .../modules/src_tokenize_tokenize_topics.html | 2 +- .../src_tokenize_word_to_root_stem.html | 2 +- ...topic_distribution_topic_distribution.html | 2 +- docs/modules/src_topics_ngrams.html | 2 +- .../src_topics_rank_sentences_keyphrases.html | 2 +- .../src_topics_seektopic_keyphrases.html | 2 +- .../src_trafilatura_extractor_baseline.html | 9 + .../src_trafilatura_extractor_core.html | 8 + .../src_trafilatura_extractor_courlan-1.html | 31 + .../src_trafilatura_extractor_courlan.html | 31 + ...c_trafilatura_extractor_courlan_clean.html | 11 + ...rc_trafilatura_extractor_courlan_core.html | 7 + ...trafilatura_extractor_courlan_filters.html | 14 + ...rc_trafilatura_extractor_courlan_meta.html | 6 + ...rafilatura_extractor_courlan_network.html} | 2 +- ...afilatura_extractor_courlan_sampling.html} | 3 +- ...rafilatura_extractor_courlan_settings.html | 8 + ...rafilatura_extractor_courlan_urlstore.html | 5 + ...rafilatura_extractor_courlan_urlutils.html | 13 + ...c_trafilatura_extractor_deduplication.html | 10 + ... src_trafilatura_extractor_downloads.html} | 7 +- ...> src_trafilatura_extractor_external.html} | 21 +- ...l => src_trafilatura_extractor_feeds.html} | 5 +- ...ilatura_extractor_html_special_chars.html} | 2 +- .../src_trafilatura_extractor_htmldate-1.html | 5 + ...rafilatura_extractor_htmldate.export_.html | 4 + .../src_trafilatura_extractor_htmldate.html | 6 + ...c_trafilatura_extractor_htmldate_core.html | 15 + ...ilatura_extractor_htmldate_extractors.html | 25 + ...c_trafilatura_extractor_htmldate_meta.html | 5 + ...afilatura_extractor_htmldate_settings.html | 9 + ..._trafilatura_extractor_htmldate_utils.html | 16 + ...ilatura_extractor_htmldate_validators.html | 14 + ..._trafilatura_extractor_htmlprocessing.html | 22 + ...c_trafilatura_extractor_json_metadata.html | 8 + ..._trafilatura_extractor_main_extractor.html | 6 + ...ml => src_trafilatura_extractor_meta.html} | 2 +- ...> src_trafilatura_extractor_metadata.html} | 3 +- ...rc_trafilatura_extractor_readability.html} | 2 +- ...afilatura_extractor_readability_lxml.html} | 2 +- .../src_trafilatura_extractor_settings.html | 23 + .../src_trafilatura_extractor_sitemaps.html | 8 + ... => src_trafilatura_extractor_spider.html} | 6 +- ...afilatura_extractor_test_extract_test.html | 4 + .../src_trafilatura_extractor_utils.html | 20 + ...tml => src_trafilatura_extractor_xml.html} | 15 +- ... => src_trafilatura_extractor_xpaths.html} | 15 +- ...ct_content_courlan_settings.BLACKLIST.html | 4 - ..._content_courlan_settings.LANG_PARAMS.html | 4 - ...rc_extract_content_htmldate.export_-1.html | 4 - ...tract_content_settings.DEFAULT_CONFIG.html | 4 - ...act_content_settings.MANUALLY_CLEANED.html | 4 - ...tent_settings.MAX_FILES_PER_DIRECTORY.html | 4 - ...rc_extract_content_settings.MAX_LINKS.html | 4 - ...ct_content_settings.MAX_SITEMAPS_SEEN.html | 4 - ...ct_content_settings.SUPPORTED_FORMATS.html | 4 - ..._extract_content_settings.TAG_CATALOG.html | 4 - .../src_extract_content_spider.URL_STORE.html | 4 - ..._content_xpaths.AUTHOR_DISCARD_XPATHS.html | 4 - ..._extract_content_xpaths.AUTHOR_XPATHS.html | 4 - ...ract_content_xpaths.CATEGORIES_XPATHS.html | 4 - ..._content_xpaths.OVERALL_DISCARD_XPATH.html | 4 - ...rc_extract_content_xpaths.TAGS_XPATHS.html | 4 - ...t_content_xpaths.TEASER_DISCARD_XPATH.html | 4 - ...c_extract_content_xpaths.TITLE_XPATHS.html | 4 - ...actor_courlan_settings.ALLOWED_PARAMS.html | 4 + ..._extractor_courlan_settings.BLACKLIST.html | 4 + ...xtractor_courlan_settings.LANG_PARAMS.html | 4 + ...tractor_courlan_settings.TARGET_LANGS.html | 4 + ...filatura_extractor_htmldate.export_-1.html | 4 + ...extractor_settings.BASIC_CLEAN_XPATH.html} | 2 +- ...a_extractor_settings.CUT_EMPTY_ELEMS.html} | 2 +- ...ura_extractor_settings.DEFAULT_CONFIG.html | 4 + ...tura_extractor_settings.FILENAME_LEN.html} | 2 +- ...extractor_settings.JUSTEXT_LANGUAGES.html} | 2 +- ...filatura_extractor_settings.LRU_SIZE.html} | 2 +- ..._extractor_settings.MANUALLY_CLEANED.html} | 2 +- ..._extractor_settings.MANUALLY_STRIPPED.html | 4 + ...tor_settings.MAX_FILES_PER_DIRECTORY.html} | 2 +- ...ilatura_extractor_settings.MAX_LINKS.html} | 2 +- ...extractor_settings.MAX_SITEMAPS_SEEN.html} | 2 +- ...ra_extractor_settings.PARALLEL_CORES.html} | 2 +- ...extractor_settings.SUPPORTED_FMT_CLI.html} | 2 +- ..._extractor_settings.SUPPORTED_FORMATS.html | 4 + ...latura_extractor_settings.TAG_CATALOG.html | 4 + ...afilatura_extractor_spider.URL_STORE.html} | 2 +- ...xtractor_xpaths.AUTHOR_DISCARD_XPATHS.html | 4 + ...latura_extractor_xpaths.AUTHOR_XPATHS.html | 4 + ...filatura_extractor_xpaths.BODY_XPATH.html} | 2 +- ...ra_extractor_xpaths.CATEGORIES_XPATHS.html | 4 + ...tractor_xpaths.COMMENTS_DISCARD_XPATH.html | 4 + ...atura_extractor_xpaths.COMMENTS_XPATH.html | 4 + ...tractor_xpaths.DISCARD_IMAGE_ELEMENTS.html | 4 + ...xtractor_xpaths.OVERALL_DISCARD_XPATH.html | 4 + ...ractor_xpaths.PRECISION_DISCARD_XPATH.html | 4 + ...xtractor_xpaths.REMOVE_COMMENTS_XPATH.html | 4 + ...ilatura_extractor_xpaths.TAGS_XPATHS.html} | 2 +- ...extractor_xpaths.TEASER_DISCARD_XPATH.html | 4 + ...ilatura_extractor_xpaths.TITLE_XPATHS.html | 4 + index.js | 40 +- package.json | 31 +- pnpm-lock.yaml | 2821 +++++++++++++++++ readme.md | 47 +- src/autocomplete/autocomplete.js | 2 +- src/dataset-import/compile-topic-model.js | 2 +- src/dataset-import/compress-json-jz64.js | 4 +- src/extract-content/python/baseline.py | 121 - src/extract-content/python/clean.py | 207 -- src/extract-content/python/core.py | 364 --- src/extract-content/python/courlan-core.py | 256 -- src/extract-content/python/deduplication.py | 253 -- src/extract-content/python/downloads.py | 474 --- src/extract-content/python/external.py | 189 -- src/extract-content/python/extractors.py | 515 --- src/extract-content/python/feeds.py | 312 -- src/extract-content/python/filters.py | 286 -- src/extract-content/python/htmldate-core.py | 982 ------ src/extract-content/python/htmlprocessing.py | 412 --- src/extract-content/python/json_metadata.py | 268 -- src/extract-content/python/main_extractor.py | 666 ---- src/extract-content/python/meta (1).py | 14 - src/extract-content/python/meta (2).py | 40 - src/extract-content/python/meta.py | 32 - src/extract-content/python/metadata.py | 496 --- src/extract-content/python/network.py | 71 - .../python/readability_lxml.py | 520 --- src/extract-content/python/sampling.py | 73 - src/extract-content/python/settings (1).py | 109 - src/extract-content/python/settings (2).py | 41 - src/extract-content/python/settings.py | 282 -- src/extract-content/python/sitemaps.py | 301 -- src/extract-content/python/spider.py | 351 -- src/extract-content/python/urlstore.py | 575 ---- src/extract-content/python/urlutils.py | 173 - src/extract-content/python/utils (1).py | 260 -- src/extract-content/python/utils.py | 445 --- src/extract-content/python/validators.py | 200 -- src/extract-content/python/xml.py | 611 ---- src/extract-content/python/xpaths.py | 267 -- src/extractor/html-to-cite/url-to-favicon.js | 2 +- .../html-to-content/extract-content.js | 222 -- .../extract-selectors-per-domain.json} | 0 .../extract-content/extractor1-content.js | 391 +++ .../extractor2-content-utils.js | 743 +++++ .../extract-content/extractor2-content.js | 820 +++++ .../html-to-content/html-special-chars.js | 7 +- .../html-to-content/html-to-basic-html.js | 13 +- .../html-to-content/html-to-content.js | 73 +- src/extractor/html-to-content/readability2.js | 303 -- .../url-to-content/pdf-to-content.js | 10 +- src/extractor/url-to-content/scrape-url.js | 26 +- .../url-to-content/url-to-content.js | 18 +- .../url-to-content/youtube-to-text.js | 23 +- src/graph/embeddings-to-graph.js | 172 + src/graph/save-hnsw.js | 32 + src/match/match-quasar.js | 12 +- src/match/softmax.js | 6 +- src/match/weigh-relevance-frequency.js | 2 +- src/search-web/search-stream.js | 15 +- src/search-web/search-web.js | 4 +- src/search-web/search-wikipedia.js | 2 +- src/similarity/similarity-concept.js | 64 +- src/tokenize/sentences.js | 4 +- src/tokenize/tokenize-topics.js | 4 +- src/topic-distribution/topic-distribution.js | 2 +- src/topics/seektopic-keyphrases.js | 2 +- src/trafilatura-extractor/.gitignore | 175 + .../baseline.js | 0 .../core.js | 0 .../courlan/clean.js | 0 .../courlan/core.js | 0 .../courlan/filters.js | 0 .../courlan/index.js | 0 .../courlan/meta.js | 0 .../courlan/network.js | 0 .../courlan/sampling.js | 0 .../courlan/settings.js | 0 .../courlan/urlstore.js | 0 .../courlan/urlutils.js | 0 .../deduplication.js | 0 .../downloads.js | 0 .../external.js | 0 .../feeds.js | 0 .../html-special-chars.js | 74 + .../htmldate/core.js | 13 - .../htmldate/extractors.js | 0 .../htmldate/index.js | 0 .../htmldate/meta.js | 0 .../htmldate/settings.js | 0 .../htmldate/utils.js | 0 .../htmldate/validators.js | 0 .../htmlprocessing.js | 0 src/trafilatura-extractor/jsconfig.json | 27 + .../json_metadata.js | 0 .../main_extractor.js | 0 .../meta.js | 0 .../metadata.js | 0 src/trafilatura-extractor/package.json | 19 + .../readability.js | 31 +- .../readability_lxml.js | 0 .../settings.js | 2 +- .../sitemaps.js | 0 .../spider.js | 0 .../test/extract.test.js | 28 + .../utils.js | 0 .../xml.js | 0 .../xpaths.js | 0 test/data/extract-article.test.js | 2 +- test/embedding.test.js | 89 + test/extractor-test/add-score.test.js | 23 + test/extractor-test/add-to-parent.test.js | 17 + test/extractor-test/extractor.test.js | 26 + .../extractor-test/find-top-candidate.test.js | 70 + test/extractor-test/get-or-init-score.test.js | 55 + test/extractor-test/get-score.test.js | 20 + test/extractor-test/get-weight.test.js | 92 + test/extractor-test/score-commas.test.js | 18 + test/extractor-test/score-content.test.js | 90 + test/extractor-test/score-length.test.js | 21 + test/extractor-test/score-node.test.js | 101 + test/extractor-test/score-parag.test.js | 39 + test/extractor-test/set-score.test.js | 19 + test/foo.dat | Bin 1856 -> 0 bytes test/graph.test.js | 32 + test/hnsw.js | 45 - test/readability.test.js | 37 +- test/relevace-concept-vector.test.js | 6 +- test/topic-distribution.test.js | 2 +- test/vectors.dat | Bin 8496 -> 0 bytes tsconfig.json | 2 +- web-app/package.json | 7 +- web-app/src/components/Home/Graph.svelte | 86 + web-app/src/components/Home/Home.svelte | 144 +- web-app/src/components/Home/ReadView.svelte | 2 +- 596 files changed, 8373 insertions(+), 12754 deletions(-) delete mode 100644 docs/classes/src_extract_content_core.Document.html delete mode 100644 docs/classes/src_extract_content_core.Extractor.html delete mode 100644 docs/classes/src_extract_content_courlan_urlstore.UrlStore.html delete mode 100644 docs/classes/src_extract_content_deduplication.LRUCache.html delete mode 100644 docs/classes/src_extract_content_deduplication.Simhash.html delete mode 100644 docs/classes/src_extract_content_downloads.Response.html delete mode 100644 docs/classes/src_extract_content_settings.Document.html delete mode 100644 docs/classes/src_extract_content_settings.Extractor.html delete mode 100644 docs/classes/src_extract_content_spider.CrawlParameters.html create mode 100644 docs/classes/src_trafilatura_extractor_core.Document.html create mode 100644 docs/classes/src_trafilatura_extractor_core.Extractor.html create mode 100644 docs/classes/src_trafilatura_extractor_courlan_urlstore.UrlStore.html create mode 100644 docs/classes/src_trafilatura_extractor_deduplication.LRUCache.html create mode 100644 docs/classes/src_trafilatura_extractor_deduplication.Simhash.html create mode 100644 docs/classes/src_trafilatura_extractor_downloads.Response.html rename docs/classes/{src_extractor_html_to_content_readability.Readability.html => src_trafilatura_extractor_readability.Readability.html} (55%) create mode 100644 docs/classes/src_trafilatura_extractor_settings.Document.html create mode 100644 docs/classes/src_trafilatura_extractor_settings.Extractor.html create mode 100644 docs/classes/src_trafilatura_extractor_spider.CrawlParameters.html delete mode 100644 docs/functions/src_extract_content_baseline.baseline.html delete mode 100644 docs/functions/src_extract_content_baseline.basicCleaning.html delete mode 100644 docs/functions/src_extract_content_baseline.loadHtml.html delete mode 100644 docs/functions/src_extract_content_baseline.trim.html delete mode 100644 docs/functions/src_extract_content_core.bareExtraction.html delete mode 100644 docs/functions/src_extract_content_core.extract.html delete mode 100644 docs/functions/src_extract_content_courlan_clean.cleanQuery.html delete mode 100644 docs/functions/src_extract_content_courlan_clean.cleanUrl.html delete mode 100644 docs/functions/src_extract_content_courlan_clean.decodePunycode.html delete mode 100644 docs/functions/src_extract_content_courlan_clean.normalizeFragment.html delete mode 100644 docs/functions/src_extract_content_courlan_clean.normalizePart.html delete mode 100644 docs/functions/src_extract_content_courlan_clean.normalizeUrl.html delete mode 100644 docs/functions/src_extract_content_courlan_clean.scrubUrl.html delete mode 100644 docs/functions/src_extract_content_courlan_filters.basicFilter.html delete mode 100644 docs/functions/src_extract_content_courlan_filters.domainFilter.html delete mode 100644 docs/functions/src_extract_content_courlan_filters.extensionFilter.html delete mode 100644 docs/functions/src_extract_content_courlan_filters.isNavigationPage.html delete mode 100644 docs/functions/src_extract_content_courlan_filters.isNotCrawlable.html delete mode 100644 docs/functions/src_extract_content_courlan_filters.isValidUrl.html delete mode 100644 docs/functions/src_extract_content_courlan_filters.langFilter.html delete mode 100644 docs/functions/src_extract_content_courlan_filters.pathFilter.html delete mode 100644 docs/functions/src_extract_content_courlan_filters.typeFilter.html delete mode 100644 docs/functions/src_extract_content_courlan_filters.validateUrl.html delete mode 100644 docs/functions/src_extract_content_courlan_meta.addCache.html delete mode 100644 docs/functions/src_extract_content_courlan_meta.clearCaches.html delete mode 100644 docs/functions/src_extract_content_courlan_network.redirectionTest.html delete mode 100644 docs/functions/src_extract_content_courlan_urlutils.extractDomain.html delete mode 100644 docs/functions/src_extract_content_courlan_urlutils.filterUrls.html delete mode 100644 docs/functions/src_extract_content_courlan_urlutils.getBaseUrl.html delete mode 100644 docs/functions/src_extract_content_courlan_urlutils.getHostAndPath.html delete mode 100644 docs/functions/src_extract_content_courlan_urlutils.getHostinfo.html delete mode 100644 docs/functions/src_extract_content_courlan_urlutils.getTldinfo.html delete mode 100644 docs/functions/src_extract_content_courlan_urlutils.isExternal.html delete mode 100644 docs/functions/src_extract_content_courlan_urlutils.isKnownLink.html delete mode 100644 docs/functions/src_extract_content_deduplication.contentFingerprint.html delete mode 100644 docs/functions/src_extract_content_deduplication.isSimilarDomain.html delete mode 100644 docs/functions/src_extract_content_downloads.addToCompressedDict.html delete mode 100644 docs/functions/src_extract_content_downloads.bufferedDownloads.html delete mode 100644 docs/functions/src_extract_content_downloads.fetchResponse.html delete mode 100644 docs/functions/src_extract_content_downloads.fetchUrl.html delete mode 100644 docs/functions/src_extract_content_downloads.loadDownloadBuffer.html delete mode 100644 docs/functions/src_extract_content_external.compareExtraction.html delete mode 100644 docs/functions/src_extract_content_external.justextRescue.html delete mode 100644 docs/functions/src_extract_content_external.sanitizeTree.html delete mode 100644 docs/functions/src_extract_content_feeds.findFeedUrls.html delete mode 100644 docs/functions/src_extract_content_feeds.tryHomepage.html delete mode 100644 docs/functions/src_extract_content_htmlprocessing.buildHtmlOutput.html delete mode 100644 docs/functions/src_extract_content_htmlprocessing.collectLinkInfo.html delete mode 100644 docs/functions/src_extract_content_htmlprocessing.convertDeletions.html delete mode 100644 docs/functions/src_extract_content_htmlprocessing.convertDetails.html delete mode 100644 docs/functions/src_extract_content_htmlprocessing.convertLists.html delete mode 100644 docs/functions/src_extract_content_htmlprocessing.convertQuotes.html delete mode 100644 docs/functions/src_extract_content_htmlprocessing.convertToHtml.html delete mode 100644 docs/functions/src_extract_content_htmlprocessing.deleteByLinkDensity.html delete mode 100644 docs/functions/src_extract_content_htmlprocessing.linkDensityTest.html delete mode 100644 docs/functions/src_extract_content_htmlprocessing.linkDensityTestTables.html delete mode 100644 docs/functions/src_extract_content_htmlprocessing.pruneHtml.html delete mode 100644 docs/functions/src_extract_content_htmlprocessing.pruneUnwantedNodes.html delete mode 100644 docs/functions/src_extract_content_htmlprocessing.treeCleaning.html delete mode 100644 docs/functions/src_extract_content_json_metadata.extractJson.html delete mode 100644 docs/functions/src_extract_content_json_metadata.extractJsonParseError.html delete mode 100644 docs/functions/src_extract_content_json_metadata.normalizeAuthors.html delete mode 100644 docs/functions/src_extract_content_main_extractor.extractComments.html delete mode 100644 docs/functions/src_extract_content_main_extractor.extractContent.html delete mode 100644 docs/functions/src_extract_content_meta.resetCaches.html delete mode 100644 docs/functions/src_extract_content_metadata.extractMetadata.html delete mode 100644 docs/functions/src_extract_content_settings.argsToExtractor.html delete mode 100644 docs/functions/src_extract_content_sitemaps.extractRobotsSitemaps.html delete mode 100644 docs/functions/src_extract_content_sitemaps.findRobotsSitemaps.html delete mode 100644 docs/functions/src_extract_content_sitemaps.isPlausibleSitemap.html delete mode 100644 docs/functions/src_extract_content_sitemaps.sitemapSearch.html delete mode 100644 docs/functions/src_extract_content_spider.focusedCrawler.html delete mode 100644 docs/functions/src_extract_content_utils.controlXmlOutput.html delete mode 100644 docs/functions/src_extract_content_utils.deleteElement.html delete mode 100644 docs/functions/src_extract_content_utils.mergeWithParent.html delete mode 100644 docs/functions/src_extract_content_utils.removeEmptyElements.html delete mode 100644 docs/functions/src_extract_content_utils.stripDoubleTags.html delete mode 100644 docs/functions/src_extract_content_utils.textfilter.html delete mode 100644 docs/functions/src_extract_content_utils.trim.html delete mode 100644 docs/functions/src_extract_content_utils.xmlToTxt.html delete mode 100644 docs/functions/src_extract_content_xml.buildJsonOutput.html delete mode 100644 docs/functions/src_extract_content_xml.buildTeiOutput.html delete mode 100644 docs/functions/src_extract_content_xml.checkTei.html delete mode 100644 docs/functions/src_extract_content_xml.deleteElement.html delete mode 100644 docs/functions/src_extract_content_xml.removeEmptyElements.html delete mode 100644 docs/functions/src_extractor_html_to_content_extract_content.extractMainContent.html create mode 100644 docs/functions/src_extractor_html_to_content_extract_content_extractor1_content.extractContentHTML.html create mode 100644 docs/functions/src_extractor_html_to_content_extract_content_extractor2_content.extractContentHTML2.html delete mode 100644 docs/functions/src_extractor_html_to_content_html_to_content.extractContent.html create mode 100644 docs/functions/src_extractor_html_to_content_html_to_content.extractContentAndCite.html delete mode 100644 docs/functions/src_extractor_html_to_content_readability2.extractContentHTML.html rename docs/functions/{src_extractor_url_to_content_pdf_to_content.extractPDF.html => src_extractor_url_to_content_pdf_to_content.convertPDFToHTML.html} (55%) create mode 100644 docs/functions/src_graph_embeddings_to_graph.convertEmbeddingsToHNSW.html create mode 100644 docs/functions/src_graph_embeddings_to_graph.convertEmbeddingsToUMAP.html create mode 100644 docs/functions/src_graph_embeddings_to_graph.convertTextToEmbeddingVector.html create mode 100644 docs/functions/src_graph_embeddings_to_graph.cosineSimilarity.html create mode 100644 docs/functions/src_graph_embeddings_to_graph.getAllEmbeddings.html create mode 100644 docs/functions/src_graph_embeddings_to_graph.getEmbeddingPipeline.html create mode 100644 docs/functions/src_graph_embeddings_to_graph.searchWithQuery.html create mode 100644 docs/functions/src_graph_save_hnsw.convertEmbeddingsIndexToBase64.html delete mode 100644 docs/functions/src_similarity_similarity_concept.vectorizeTextAsConcept.html create mode 100644 docs/functions/src_trafilatura_extractor_baseline.baseline.html create mode 100644 docs/functions/src_trafilatura_extractor_baseline.basicCleaning.html create mode 100644 docs/functions/src_trafilatura_extractor_baseline.html2txt.html create mode 100644 docs/functions/src_trafilatura_extractor_baseline.loadHtml.html create mode 100644 docs/functions/src_trafilatura_extractor_baseline.trim.html rename docs/{variables/src_extract_content_xpaths.COMMENTS_XPATH.html => functions/src_trafilatura_extractor_core.bareExtraction.html} (75%) create mode 100644 docs/functions/src_trafilatura_extractor_core.extract.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_clean.cleanQuery.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_clean.cleanUrl.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_clean.decodePunycode.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_clean.normalizeFragment.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_clean.normalizePart.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_clean.normalizeUrl.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_clean.scrubUrl.html rename docs/functions/{src_extract_content_courlan_core.checkUrl.html => src_trafilatura_extractor_courlan_core.checkUrl.html} (58%) rename docs/functions/{src_extract_content_courlan_core.extractLinks.html => src_trafilatura_extractor_courlan_core.extractLinks.html} (67%) rename docs/functions/{src_extract_content_courlan_core.filterLinks.html => src_trafilatura_extractor_courlan_core.filterLinks.html} (60%) create mode 100644 docs/functions/src_trafilatura_extractor_courlan_filters.basicFilter.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_filters.domainFilter.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_filters.extensionFilter.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_filters.isNavigationPage.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_filters.isNotCrawlable.html rename docs/{variables/src_extract_content_xpaths.BODY_XPATH.html => functions/src_trafilatura_extractor_courlan_filters.isValidUrl.html} (75%) create mode 100644 docs/functions/src_trafilatura_extractor_courlan_filters.langFilter.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_filters.pathFilter.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_filters.typeFilter.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_filters.validateUrl.html rename docs/functions/{src_extract_content_baseline.html2txt.html => src_trafilatura_extractor_courlan_meta.addCache.html} (77%) create mode 100644 docs/functions/src_trafilatura_extractor_courlan_meta.clearCaches.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_network.redirectionTest.html rename docs/functions/{src_extract_content_courlan_sampling.sampleUrls.html => src_trafilatura_extractor_courlan_sampling.sampleUrls.html} (57%) rename docs/functions/{src_extract_content_deduplication.duplicateTest.html => src_trafilatura_extractor_courlan_urlutils.extractDomain.html} (66%) create mode 100644 docs/functions/src_trafilatura_extractor_courlan_urlutils.filterUrls.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_urlutils.fixRelativeUrls.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_urlutils.getBaseUrl.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_urlutils.getHostAndPath.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_urlutils.getHostinfo.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_urlutils.getTldinfo.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_urlutils.isExternal.html create mode 100644 docs/functions/src_trafilatura_extractor_courlan_urlutils.isKnownLink.html create mode 100644 docs/functions/src_trafilatura_extractor_deduplication.contentFingerprint.html create mode 100644 docs/functions/src_trafilatura_extractor_deduplication.duplicateTest.html create mode 100644 docs/functions/src_trafilatura_extractor_deduplication.generateBowHash.html create mode 100644 docs/functions/src_trafilatura_extractor_deduplication.isSimilarDomain.html create mode 100644 docs/functions/src_trafilatura_extractor_downloads.addToCompressedDict.html create mode 100644 docs/functions/src_trafilatura_extractor_downloads.bufferedDownloads.html create mode 100644 docs/functions/src_trafilatura_extractor_downloads.fetchResponse.html create mode 100644 docs/functions/src_trafilatura_extractor_downloads.fetchUrl.html create mode 100644 docs/functions/src_trafilatura_extractor_downloads.loadDownloadBuffer.html create mode 100644 docs/functions/src_trafilatura_extractor_external.compareExtraction.html create mode 100644 docs/functions/src_trafilatura_extractor_external.justextRescue.html create mode 100644 docs/functions/src_trafilatura_extractor_external.sanitizeTree.html rename docs/{variables/src_extract_content_courlan_settings.TARGET_LANGS.html => functions/src_trafilatura_extractor_feeds.findFeedUrls.html} (71%) rename docs/functions/{src_extract_content_htmlprocessing.processNode.html => src_trafilatura_extractor_feeds.tryHomepage.html} (78%) create mode 100644 docs/functions/src_trafilatura_extractor_html_special_chars.convertHTMLSpecialChars.html create mode 100644 docs/functions/src_trafilatura_extractor_htmlprocessing.buildHtmlOutput.html rename docs/functions/{src_extract_content_htmlprocessing.convertHeadings.html => src_trafilatura_extractor_htmlprocessing.collectLinkInfo.html} (78%) create mode 100644 docs/functions/src_trafilatura_extractor_htmlprocessing.convertDeletions.html create mode 100644 docs/functions/src_trafilatura_extractor_htmlprocessing.convertDetails.html rename docs/functions/{src_extract_content_courlan_urlutils.fixRelativeUrls.html => src_trafilatura_extractor_htmlprocessing.convertHeadings.html} (73%) create mode 100644 docs/functions/src_trafilatura_extractor_htmlprocessing.convertLineBreaks.html rename docs/{variables/src_extract_content_settings.FILENAME_LEN.html => functions/src_trafilatura_extractor_htmlprocessing.convertLists.html} (79%) create mode 100644 docs/functions/src_trafilatura_extractor_htmlprocessing.convertQuotes.html create mode 100644 docs/functions/src_trafilatura_extractor_htmlprocessing.convertTags.html create mode 100644 docs/functions/src_trafilatura_extractor_htmlprocessing.convertToHtml.html create mode 100644 docs/functions/src_trafilatura_extractor_htmlprocessing.deleteByLinkDensity.html rename docs/{variables/src_extract_content_settings.PARALLEL_CORES.html => functions/src_trafilatura_extractor_htmlprocessing.handleTextnode.html} (71%) create mode 100644 docs/functions/src_trafilatura_extractor_htmlprocessing.linkDensityTest.html create mode 100644 docs/functions/src_trafilatura_extractor_htmlprocessing.linkDensityTestTables.html create mode 100644 docs/functions/src_trafilatura_extractor_htmlprocessing.processNode.html create mode 100644 docs/functions/src_trafilatura_extractor_htmlprocessing.pruneHtml.html rename docs/functions/{src_extract_content_readability_lxml.extractContentHTML.html => src_trafilatura_extractor_htmlprocessing.pruneUnwantedNodes.html} (74%) create mode 100644 docs/functions/src_trafilatura_extractor_htmlprocessing.treeCleaning.html rename docs/functions/{src_extract_content_utils.buildTeiOutput.html => src_trafilatura_extractor_json_metadata.extractJson.html} (50%) create mode 100644 docs/functions/src_trafilatura_extractor_json_metadata.extractJsonParseError.html create mode 100644 docs/functions/src_trafilatura_extractor_json_metadata.normalizeAuthors.html create mode 100644 docs/functions/src_trafilatura_extractor_json_metadata.normalizeJson.html rename docs/functions/{src_extract_content_deduplication.generateBowHash.html => src_trafilatura_extractor_main_extractor.extractComments.html} (78%) create mode 100644 docs/functions/src_trafilatura_extractor_main_extractor.extractContent.html create mode 100644 docs/functions/src_trafilatura_extractor_meta.resetCaches.html create mode 100644 docs/functions/src_trafilatura_extractor_metadata.extractMetadata.html create mode 100644 docs/functions/src_trafilatura_extractor_readability_lxml.extractContentHTML.html rename docs/{variables/src_extract_content_settings.CUT_EMPTY_ELEMS.html => functions/src_trafilatura_extractor_settings.argsToExtractor.html} (75%) create mode 100644 docs/functions/src_trafilatura_extractor_settings.setDateParams.html create mode 100644 docs/functions/src_trafilatura_extractor_sitemaps.extractRobotsSitemaps.html create mode 100644 docs/functions/src_trafilatura_extractor_sitemaps.findRobotsSitemaps.html create mode 100644 docs/functions/src_trafilatura_extractor_sitemaps.isPlausibleSitemap.html rename docs/functions/{src_extract_content_settings.setDateParams.html => src_trafilatura_extractor_sitemaps.sitemapSearch.html} (61%) create mode 100644 docs/functions/src_trafilatura_extractor_spider.focusedCrawler.html rename docs/functions/{src_extract_content_utils.writeFullheader.html => src_trafilatura_extractor_utils.buildJsonOutput.html} (77%) rename docs/functions/{src_extract_content_htmlprocessing.handleTextnode.html => src_trafilatura_extractor_utils.buildTeiOutput.html} (72%) create mode 100644 docs/functions/src_trafilatura_extractor_utils.buildXmlOutput.html create mode 100644 docs/functions/src_trafilatura_extractor_utils.checkTei.html create mode 100644 docs/functions/src_trafilatura_extractor_utils.controlXmlOutput.html rename docs/functions/{src_extract_content_json_metadata.normalizeJson.html => src_trafilatura_extractor_utils.deleteElement.html} (77%) rename docs/functions/{src_extract_content_xml.stripDoubleTags.html => src_trafilatura_extractor_utils.mergeWithParent.html} (76%) rename docs/functions/{src_extract_content_xml.controlXmlOutput.html => src_trafilatura_extractor_utils.normalizeUnicode.html} (77%) create mode 100644 docs/functions/src_trafilatura_extractor_utils.removeEmptyElements.html rename docs/functions/{src_extract_content_xml.mergeWithParent.html => src_trafilatura_extractor_utils.stripDoubleTags.html} (77%) create mode 100644 docs/functions/src_trafilatura_extractor_utils.textCharsTest.html create mode 100644 docs/functions/src_trafilatura_extractor_utils.textfilter.html create mode 100644 docs/functions/src_trafilatura_extractor_utils.trim.html create mode 100644 docs/functions/src_trafilatura_extractor_utils.writeFullheader.html create mode 100644 docs/functions/src_trafilatura_extractor_utils.writeTeitree.html rename docs/functions/{src_extract_content_utils.checkTei.html => src_trafilatura_extractor_utils.xmlToTxt.html} (78%) create mode 100644 docs/functions/src_trafilatura_extractor_xml.buildJsonOutput.html rename docs/functions/{src_extract_content_utils.buildXmlOutput.html => src_trafilatura_extractor_xml.buildTeiOutput.html} (80%) create mode 100644 docs/functions/src_trafilatura_extractor_xml.buildXmlOutput.html create mode 100644 docs/functions/src_trafilatura_extractor_xml.checkTei.html create mode 100644 docs/functions/src_trafilatura_extractor_xml.controlXmlOutput.html create mode 100644 docs/functions/src_trafilatura_extractor_xml.deleteElement.html create mode 100644 docs/functions/src_trafilatura_extractor_xml.mergeWithParent.html create mode 100644 docs/functions/src_trafilatura_extractor_xml.removeEmptyElements.html create mode 100644 docs/functions/src_trafilatura_extractor_xml.stripDoubleTags.html create mode 100644 docs/interfaces/src_extractor_html_to_content_html_to_content.ExtractedContent.html create mode 100644 docs/interfaces/src_graph_embeddings_to_graph.PlotDataPoint.html delete mode 100644 docs/modules/src_extract_content_baseline.html delete mode 100644 docs/modules/src_extract_content_core.html delete mode 100644 docs/modules/src_extract_content_courlan-1.html delete mode 100644 docs/modules/src_extract_content_courlan.html delete mode 100644 docs/modules/src_extract_content_courlan_clean.html delete mode 100644 docs/modules/src_extract_content_courlan_filters.html delete mode 100644 docs/modules/src_extract_content_courlan_settings.html delete mode 100644 docs/modules/src_extract_content_courlan_urlutils.html delete mode 100644 docs/modules/src_extract_content_deduplication.html delete mode 100644 docs/modules/src_extract_content_htmldate-1.html delete mode 100644 docs/modules/src_extract_content_htmldate.export_.html delete mode 100644 docs/modules/src_extract_content_htmldate_core.html delete mode 100644 docs/modules/src_extract_content_htmldate_extractors.html delete mode 100644 docs/modules/src_extract_content_htmldate_meta.html delete mode 100644 docs/modules/src_extract_content_htmldate_settings.html delete mode 100644 docs/modules/src_extract_content_htmldate_utils.html delete mode 100644 docs/modules/src_extract_content_htmldate_validators.html delete mode 100644 docs/modules/src_extract_content_json_metadata.html delete mode 100644 docs/modules/src_extract_content_readability_lxml.html delete mode 100644 docs/modules/src_extract_content_settings.html delete mode 100644 docs/modules/src_extract_content_sitemaps.html delete mode 100644 docs/modules/src_extract_content_spider.html delete mode 100644 docs/modules/src_extract_content_utils.html delete mode 100644 docs/modules/src_extract_content_xml.html delete mode 100644 docs/modules/src_extract_content_xpaths.html delete mode 100644 docs/modules/src_extractor_html_to_content_extract_content.html rename docs/modules/{src_extract_content_feeds.html => src_extractor_html_to_content_extract_content_extractor1_content.html} (51%) create mode 100644 docs/modules/src_extractor_html_to_content_extract_content_extractor2_content.html rename docs/{variables/src_extract_content_settings.LRU_SIZE.html => modules/src_extractor_html_to_content_extract_content_extractor2_content_utils.html} (56%) create mode 100644 docs/modules/src_graph_embeddings_to_graph.html rename docs/modules/{src_extract_content_meta.html => src_graph_save_hnsw.html} (53%) create mode 100644 docs/modules/src_trafilatura_extractor_baseline.html create mode 100644 docs/modules/src_trafilatura_extractor_core.html create mode 100644 docs/modules/src_trafilatura_extractor_courlan-1.html create mode 100644 docs/modules/src_trafilatura_extractor_courlan.html create mode 100644 docs/modules/src_trafilatura_extractor_courlan_clean.html create mode 100644 docs/modules/src_trafilatura_extractor_courlan_core.html create mode 100644 docs/modules/src_trafilatura_extractor_courlan_filters.html create mode 100644 docs/modules/src_trafilatura_extractor_courlan_meta.html rename docs/modules/{src_extractor_html_to_content_readability.html => src_trafilatura_extractor_courlan_network.html} (89%) rename docs/modules/{src_extract_content_htmldate.html => src_trafilatura_extractor_courlan_sampling.html} (53%) create mode 100644 docs/modules/src_trafilatura_extractor_courlan_settings.html create mode 100644 docs/modules/src_trafilatura_extractor_courlan_urlstore.html create mode 100644 docs/modules/src_trafilatura_extractor_courlan_urlutils.html create mode 100644 docs/modules/src_trafilatura_extractor_deduplication.html rename docs/modules/{src_extract_content_courlan_network.html => src_trafilatura_extractor_downloads.html} (73%) rename docs/modules/{src_extract_content_htmlprocessing.html => src_trafilatura_extractor_external.html} (55%) rename docs/modules/{src_extract_content_external.html => src_trafilatura_extractor_feeds.html} (51%) rename docs/modules/{src_extract_content_courlan_sampling.html => src_trafilatura_extractor_html_special_chars.html} (52%) create mode 100644 docs/modules/src_trafilatura_extractor_htmldate-1.html create mode 100644 docs/modules/src_trafilatura_extractor_htmldate.export_.html create mode 100644 docs/modules/src_trafilatura_extractor_htmldate.html create mode 100644 docs/modules/src_trafilatura_extractor_htmldate_core.html create mode 100644 docs/modules/src_trafilatura_extractor_htmldate_extractors.html create mode 100644 docs/modules/src_trafilatura_extractor_htmldate_meta.html create mode 100644 docs/modules/src_trafilatura_extractor_htmldate_settings.html create mode 100644 docs/modules/src_trafilatura_extractor_htmldate_utils.html create mode 100644 docs/modules/src_trafilatura_extractor_htmldate_validators.html create mode 100644 docs/modules/src_trafilatura_extractor_htmlprocessing.html create mode 100644 docs/modules/src_trafilatura_extractor_json_metadata.html create mode 100644 docs/modules/src_trafilatura_extractor_main_extractor.html rename docs/modules/{src_extract_content_metadata.html => src_trafilatura_extractor_meta.html} (53%) rename docs/modules/{src_extract_content_main_extractor.html => src_trafilatura_extractor_metadata.html} (88%) rename docs/modules/{src_extract_content_courlan_urlstore.html => src_trafilatura_extractor_readability.html} (52%) rename docs/modules/{src_extractor_html_to_content_readability2.html => src_trafilatura_extractor_readability_lxml.html} (92%) create mode 100644 docs/modules/src_trafilatura_extractor_settings.html create mode 100644 docs/modules/src_trafilatura_extractor_sitemaps.html rename docs/modules/{src_extract_content_courlan_core.html => src_trafilatura_extractor_spider.html} (80%) create mode 100644 docs/modules/src_trafilatura_extractor_test_extract_test.html create mode 100644 docs/modules/src_trafilatura_extractor_utils.html rename docs/modules/{src_extract_content_downloads.html => src_trafilatura_extractor_xml.html} (72%) rename docs/modules/{src_extract_content_courlan_meta.html => src_trafilatura_extractor_xpaths.html} (61%) delete mode 100644 docs/variables/src_extract_content_courlan_settings.BLACKLIST.html delete mode 100644 docs/variables/src_extract_content_courlan_settings.LANG_PARAMS.html delete mode 100644 docs/variables/src_extract_content_htmldate.export_-1.html delete mode 100644 docs/variables/src_extract_content_settings.DEFAULT_CONFIG.html delete mode 100644 docs/variables/src_extract_content_settings.MANUALLY_CLEANED.html delete mode 100644 docs/variables/src_extract_content_settings.MAX_FILES_PER_DIRECTORY.html delete mode 100644 docs/variables/src_extract_content_settings.MAX_LINKS.html delete mode 100644 docs/variables/src_extract_content_settings.MAX_SITEMAPS_SEEN.html delete mode 100644 docs/variables/src_extract_content_settings.SUPPORTED_FORMATS.html delete mode 100644 docs/variables/src_extract_content_settings.TAG_CATALOG.html delete mode 100644 docs/variables/src_extract_content_spider.URL_STORE.html delete mode 100644 docs/variables/src_extract_content_xpaths.AUTHOR_DISCARD_XPATHS.html delete mode 100644 docs/variables/src_extract_content_xpaths.AUTHOR_XPATHS.html delete mode 100644 docs/variables/src_extract_content_xpaths.CATEGORIES_XPATHS.html delete mode 100644 docs/variables/src_extract_content_xpaths.OVERALL_DISCARD_XPATH.html delete mode 100644 docs/variables/src_extract_content_xpaths.TAGS_XPATHS.html delete mode 100644 docs/variables/src_extract_content_xpaths.TEASER_DISCARD_XPATH.html delete mode 100644 docs/variables/src_extract_content_xpaths.TITLE_XPATHS.html create mode 100644 docs/variables/src_trafilatura_extractor_courlan_settings.ALLOWED_PARAMS.html create mode 100644 docs/variables/src_trafilatura_extractor_courlan_settings.BLACKLIST.html create mode 100644 docs/variables/src_trafilatura_extractor_courlan_settings.LANG_PARAMS.html create mode 100644 docs/variables/src_trafilatura_extractor_courlan_settings.TARGET_LANGS.html create mode 100644 docs/variables/src_trafilatura_extractor_htmldate.export_-1.html rename docs/{functions/src_extract_content_htmlprocessing.convertLineBreaks.html => variables/src_trafilatura_extractor_settings.BASIC_CLEAN_XPATH.html} (79%) rename docs/{functions/src_extract_content_utils.buildJsonOutput.html => variables/src_trafilatura_extractor_settings.CUT_EMPTY_ELEMS.html} (76%) create mode 100644 docs/variables/src_trafilatura_extractor_settings.DEFAULT_CONFIG.html rename docs/{functions/src_extract_content_utils.writeTeitree.html => variables/src_trafilatura_extractor_settings.FILENAME_LEN.html} (79%) rename docs/variables/{src_extract_content_settings.JUSTEXT_LANGUAGES.html => src_trafilatura_extractor_settings.JUSTEXT_LANGUAGES.html} (51%) rename docs/variables/{src_extract_content_settings.MANUALLY_STRIPPED.html => src_trafilatura_extractor_settings.LRU_SIZE.html} (53%) rename docs/variables/{src_extract_content_xpaths.DISCARD_IMAGE_ELEMENTS.html => src_trafilatura_extractor_settings.MANUALLY_CLEANED.html} (53%) create mode 100644 docs/variables/src_trafilatura_extractor_settings.MANUALLY_STRIPPED.html rename docs/variables/{src_extract_content_xpaths.COMMENTS_DISCARD_XPATH.html => src_trafilatura_extractor_settings.MAX_FILES_PER_DIRECTORY.html} (53%) rename docs/variables/{src_extract_content_settings.SUPPORTED_FMT_CLI.html => src_trafilatura_extractor_settings.MAX_LINKS.html} (53%) rename docs/variables/{src_extract_content_settings.BASIC_CLEAN_XPATH.html => src_trafilatura_extractor_settings.MAX_SITEMAPS_SEEN.html} (88%) rename docs/{functions/src_extract_content_xml.buildXmlOutput.html => variables/src_trafilatura_extractor_settings.PARALLEL_CORES.html} (80%) rename docs/variables/{src_extract_content_xpaths.PRECISION_DISCARD_XPATH.html => src_trafilatura_extractor_settings.SUPPORTED_FMT_CLI.html} (53%) create mode 100644 docs/variables/src_trafilatura_extractor_settings.SUPPORTED_FORMATS.html create mode 100644 docs/variables/src_trafilatura_extractor_settings.TAG_CATALOG.html rename docs/variables/{src_extract_content_xpaths.REMOVE_COMMENTS_XPATH.html => src_trafilatura_extractor_spider.URL_STORE.html} (53%) create mode 100644 docs/variables/src_trafilatura_extractor_xpaths.AUTHOR_DISCARD_XPATHS.html create mode 100644 docs/variables/src_trafilatura_extractor_xpaths.AUTHOR_XPATHS.html rename docs/variables/{src_extract_content_courlan_settings.ALLOWED_PARAMS.html => src_trafilatura_extractor_xpaths.BODY_XPATH.html} (53%) create mode 100644 docs/variables/src_trafilatura_extractor_xpaths.CATEGORIES_XPATHS.html create mode 100644 docs/variables/src_trafilatura_extractor_xpaths.COMMENTS_DISCARD_XPATH.html create mode 100644 docs/variables/src_trafilatura_extractor_xpaths.COMMENTS_XPATH.html create mode 100644 docs/variables/src_trafilatura_extractor_xpaths.DISCARD_IMAGE_ELEMENTS.html create mode 100644 docs/variables/src_trafilatura_extractor_xpaths.OVERALL_DISCARD_XPATH.html create mode 100644 docs/variables/src_trafilatura_extractor_xpaths.PRECISION_DISCARD_XPATH.html create mode 100644 docs/variables/src_trafilatura_extractor_xpaths.REMOVE_COMMENTS_XPATH.html rename docs/{functions/src_extract_content_htmlprocessing.convertTags.html => variables/src_trafilatura_extractor_xpaths.TAGS_XPATHS.html} (74%) create mode 100644 docs/variables/src_trafilatura_extractor_xpaths.TEASER_DISCARD_XPATH.html create mode 100644 docs/variables/src_trafilatura_extractor_xpaths.TITLE_XPATHS.html create mode 100644 pnpm-lock.yaml delete mode 100644 src/extract-content/python/baseline.py delete mode 100644 src/extract-content/python/clean.py delete mode 100644 src/extract-content/python/core.py delete mode 100644 src/extract-content/python/courlan-core.py delete mode 100644 src/extract-content/python/deduplication.py delete mode 100644 src/extract-content/python/downloads.py delete mode 100644 src/extract-content/python/external.py delete mode 100644 src/extract-content/python/extractors.py delete mode 100644 src/extract-content/python/feeds.py delete mode 100644 src/extract-content/python/filters.py delete mode 100644 src/extract-content/python/htmldate-core.py delete mode 100644 src/extract-content/python/htmlprocessing.py delete mode 100644 src/extract-content/python/json_metadata.py delete mode 100644 src/extract-content/python/main_extractor.py delete mode 100644 src/extract-content/python/meta (1).py delete mode 100644 src/extract-content/python/meta (2).py delete mode 100644 src/extract-content/python/meta.py delete mode 100644 src/extract-content/python/metadata.py delete mode 100644 src/extract-content/python/network.py delete mode 100644 src/extract-content/python/readability_lxml.py delete mode 100644 src/extract-content/python/sampling.py delete mode 100644 src/extract-content/python/settings (1).py delete mode 100644 src/extract-content/python/settings (2).py delete mode 100644 src/extract-content/python/settings.py delete mode 100644 src/extract-content/python/sitemaps.py delete mode 100644 src/extract-content/python/spider.py delete mode 100644 src/extract-content/python/urlstore.py delete mode 100644 src/extract-content/python/urlutils.py delete mode 100644 src/extract-content/python/utils (1).py delete mode 100644 src/extract-content/python/utils.py delete mode 100644 src/extract-content/python/validators.py delete mode 100644 src/extract-content/python/xml.py delete mode 100644 src/extract-content/python/xpaths.py delete mode 100644 src/extractor/html-to-content/extract-content.js rename src/extractor/html-to-content/{specific-domain-extractors.json => extract-content/extract-selectors-per-domain.json} (100%) create mode 100644 src/extractor/html-to-content/extract-content/extractor1-content.js create mode 100644 src/extractor/html-to-content/extract-content/extractor2-content-utils.js create mode 100644 src/extractor/html-to-content/extract-content/extractor2-content.js delete mode 100644 src/extractor/html-to-content/readability2.js create mode 100644 src/graph/embeddings-to-graph.js create mode 100644 src/graph/save-hnsw.js create mode 100644 src/trafilatura-extractor/.gitignore rename src/{extract-content => trafilatura-extractor}/baseline.js (100%) rename src/{extract-content => trafilatura-extractor}/core.js (100%) rename src/{extract-content => trafilatura-extractor}/courlan/clean.js (100%) rename src/{extract-content => trafilatura-extractor}/courlan/core.js (100%) rename src/{extract-content => trafilatura-extractor}/courlan/filters.js (100%) rename src/{extract-content => trafilatura-extractor}/courlan/index.js (100%) rename src/{extract-content => trafilatura-extractor}/courlan/meta.js (100%) rename src/{extract-content => trafilatura-extractor}/courlan/network.js (100%) rename src/{extract-content => trafilatura-extractor}/courlan/sampling.js (100%) rename src/{extract-content => trafilatura-extractor}/courlan/settings.js (100%) rename src/{extract-content => trafilatura-extractor}/courlan/urlstore.js (100%) rename src/{extract-content => trafilatura-extractor}/courlan/urlutils.js (100%) rename src/{extract-content => trafilatura-extractor}/deduplication.js (100%) rename src/{extract-content => trafilatura-extractor}/downloads.js (100%) rename src/{extract-content => trafilatura-extractor}/external.js (100%) rename src/{extract-content => trafilatura-extractor}/feeds.js (100%) create mode 100644 src/trafilatura-extractor/html-special-chars.js rename src/{extract-content => trafilatura-extractor}/htmldate/core.js (98%) rename src/{extract-content => trafilatura-extractor}/htmldate/extractors.js (100%) rename src/{extract-content => trafilatura-extractor}/htmldate/index.js (100%) rename src/{extract-content => trafilatura-extractor}/htmldate/meta.js (100%) rename src/{extract-content => trafilatura-extractor}/htmldate/settings.js (100%) rename src/{extract-content => trafilatura-extractor}/htmldate/utils.js (100%) rename src/{extract-content => trafilatura-extractor}/htmldate/validators.js (100%) rename src/{extract-content => trafilatura-extractor}/htmlprocessing.js (100%) create mode 100644 src/trafilatura-extractor/jsconfig.json rename src/{extract-content => trafilatura-extractor}/json_metadata.js (100%) rename src/{extract-content => trafilatura-extractor}/main_extractor.js (100%) rename src/{extract-content => trafilatura-extractor}/meta.js (100%) rename src/{extract-content => trafilatura-extractor}/metadata.js (100%) create mode 100644 src/trafilatura-extractor/package.json rename src/{extractor/html-to-content => trafilatura-extractor}/readability.js (98%) rename src/{extract-content => trafilatura-extractor}/readability_lxml.js (100%) rename src/{extract-content => trafilatura-extractor}/settings.js (99%) rename src/{extract-content => trafilatura-extractor}/sitemaps.js (100%) rename src/{extract-content => trafilatura-extractor}/spider.js (100%) create mode 100644 src/trafilatura-extractor/test/extract.test.js rename src/{extract-content => trafilatura-extractor}/utils.js (100%) rename src/{extract-content => trafilatura-extractor}/xml.js (100%) rename src/{extract-content => trafilatura-extractor}/xpaths.js (100%) create mode 100644 test/embedding.test.js create mode 100644 test/extractor-test/add-score.test.js create mode 100644 test/extractor-test/add-to-parent.test.js create mode 100644 test/extractor-test/extractor.test.js create mode 100644 test/extractor-test/find-top-candidate.test.js create mode 100644 test/extractor-test/get-or-init-score.test.js create mode 100644 test/extractor-test/get-score.test.js create mode 100644 test/extractor-test/get-weight.test.js create mode 100644 test/extractor-test/score-commas.test.js create mode 100644 test/extractor-test/score-content.test.js create mode 100644 test/extractor-test/score-length.test.js create mode 100644 test/extractor-test/score-node.test.js create mode 100644 test/extractor-test/score-parag.test.js create mode 100644 test/extractor-test/set-score.test.js delete mode 100644 test/foo.dat create mode 100644 test/graph.test.js delete mode 100644 test/hnsw.js delete mode 100644 test/vectors.dat create mode 100644 web-app/src/components/Home/Graph.svelte diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index eb709a4..284a97a 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -38,6 +38,18 @@ jobs: with: # Upload entire repository path: './docs/' - - name: Deploy to GitHub Pages + - name: Deploy Docs to GitHub Pages id: deployment uses: actions/deploy-pages@v4 + + test: + name: Run Unit Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 # checkout the repo + - name: Download dependencies # execute tests in tests/ + run: | + npm install + - name: Execute tests # execute tests in tests/ + run: | + npm run test \ No newline at end of file diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 576cf71..6eb2050 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 3d7c0be..5707bc5 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/src_extract_content_core.Document.html b/docs/classes/src_extract_content_core.Document.html deleted file mode 100644 index b9452e6..0000000 --- a/docs/classes/src_extract_content_core.Document.html +++ /dev/null @@ -1,23 +0,0 @@ -
The domains allowed to initiate CORS request
+The domains allowed to initiate CORS request
The domains allowed to receive the request
include line breaks in JSON output for debugging
+Optional
options: { include line breaks in JSON output for debugging
true to add wiki page titles, false for dictionary only
max synonyms per term
min length of term to include
filetype js instead of json with "export"
sort the first words by first two letters Trie, needd for autocomplete after 2 letters typed
-
Clean a node of all elements of type "tag". +
- Preparing search index...
- The search index is not available
ai-research-agentClass Readability
Mozilla Readability (2015)
++- Define regex patterns for content identification
+- Clean HTML by removing unlikely content
+- Score nodes based on content quality indicators
+- Select the best candidate for main content
+- Extract top candidate
+- Clean the selected content
+
+Param: html
The HTML string to extract content from
+Param: options
Param: options.minContentLength
Minimum length of content to be considered valid
+Param: options.minScore
Minimum score for content to be considered valid
+Param: options.minTextLength
Minimum length of text to be considered valid
+Param: options.retryLength
Length to retry content extraction if initial attempt fails
+Returns
Extracted HTML element of main content such as article body
+Author
Based on
+Example
+ +Index
Constructors
Properties
Constructors
constructor
Mozilla Readability (2015)
++- Define regex patterns for content identification
+- Clean HTML by removing unlikely content
+- Score nodes based on content quality indicators
+- Select the best candidate for main content
+- Extract top candidate
+- Clean the selected content
+
+Parameters
Optional
options: {minContentLength: number;
minScore: number;
minTextLength: number;
retryLength: number;
}
min Content Length: number
Minimum length of content to be considered valid
+min Score: number
Minimum score for content to be considered valid
+min Text Length: number
Minimum length of text to be considered valid
+retry Length: number
Length to retry content extraction if initial attempt fails
+Rest
...args: anyReturns Readability
Extracted HTML element of main content such as article body
+Author
Based on
+Example
+ +Properties
ALTER_ TO_ DIV_ EXCEPTIONS
CLASSES_ TO_ PRESERVE
DEFAULT_ CHAR_ THRESHOLD
DEFAULT_ MAX_ ELEMS_ TO_ PARSE
DEFAULT_ N_ TOP_ CANDIDATES
DEFAULT_ TAGS_ TO_ SCORE
DEPRECATED_ SIZE_ ATTRIBUTE_ ELEMS
DIV_ TO_ P_ ELEMS
ELEMENT_ NODE
FLAG_ CLEAN_ CONDITIONALLY
FLAG_ STRIP_ UNLIKELYS
FLAG_ WEIGHT_ CLASSES
HTML_ ESCAPE_ MAP
amp: string;
apos: string;
gt: string;
lt: string;
quot: string;
} = ...
PHRASING_ ELEMS
PRESENTATIONAL_ ATTRIBUTES
REGEXPS
b64DataUrl: RegExp;
byline: RegExp;
extraneous: RegExp;
hasContent: RegExp;
hashUrl: RegExp;
jsonLdArticleTypes: RegExp;
negative: RegExp;
nextLink: RegExp;
normalize: RegExp;
okMaybeItsACandidate: RegExp;
positive: RegExp;
prevLink: RegExp;
replaceFonts: RegExp;
shareElements: RegExp;
srcsetUrl: RegExp;
tokenize: RegExp;
unlikelyCandidates: RegExp;
videos: RegExp;
whitespace: RegExp;
} = ...
TEXT_ NODE
UNLIKELY_ ROLES
_article Byline
_article Dir
_article Site Name
_article Title
_attempts
_char Threshold
_check Byline
_classes To Preserve
_clean
Clean a node of all elements of type "tag". (Unless it's a youtube/vimeo video. People love movies.)
Type declaration
Parameters
Returns void
void
-_clean Classes
Removes the class="" attribute from every element in the given +
_clean Classes
Removes the class="" attribute from every element in the given subtree, except those that match CLASSES_TO_PRESERVE and the classesToPreserve array from the options object.
Type declaration
Parameters
Returns void
void
-_clean Conditionally
Clean an element of all tags of type "tag" if they look fishy. +
_clean Conditionally
Clean an element of all tags of type "tag" if they look fishy. "Fishy" is an algorithm based on content length, classnames, link density, number of images & embeds, etc.
Type declaration
Parameters
Returns void
void
-_clean Headers
Clean out spurious headers from an Element.
+_clean Headers
Clean out spurious headers from an Element.
Type declaration
Parameters
Returns void
void
-_clean Matched Nodes
Clean out elements that match the specified conditions
+_clean Matched Nodes
Clean out elements that match the specified conditions
Type declaration
Parameters
Returns void
void
-_clean Styles
Remove the style attribute on every e and under. +
_clean Styles
Remove the style attribute on every e and under. TODO: Test if getElementsByTagName(*) is faster.
Type declaration
Parameters
Returns void
void
-_concat Node Lists
Concat all nodelists passed as arguments.
-Type declaration
Parameters
Rest
...args: any[]Returns any
...NodeList
-_debug
_disableJSONLD
_doc
_docJSDOMParser
_every Node
Iterate over a NodeList, return true if all of the provided iterate +
_concat Node Lists
Concat all nodelists passed as arguments.
+Type declaration
Parameters
Rest
...args: anyReturns any
...NodeList
+_debug
_disableJSONLD
_doc
_docJSDOMParser
_every Node
Iterate over a NodeList, return true if all of the provided iterate function calls return true, false otherwise.
For convenience, the current object context is applied to the provided iterate function.
Type declaration
Parameters
Returns any
Boolean
-_find Node
Iterate over a NodeList, and return the first node that passes +
_find Node
Iterate over a NodeList, and return the first node that passes the supplied test function
For convenience, the current object context is applied to the provided test function.
Type declaration
Parameters
Returns any
void
-_fix Lazy Images
_fix Relative Uris
Converts each and uri in the given element to an absolute URI, +
_fix Lazy Images
_fix Relative Uris
Converts each and uri in the given element to an absolute URI, ignoring #ref URIs.
Type declaration
Parameters
Returns void
void
-_flag Is Active
_flags
_for Each Node
Iterate over a NodeList, which doesn't natively fully implement the Array +
_flag Is Active
_flags
_for Each Node
Iterate over a NodeList, which doesn't natively fully implement the Array interface.
For convenience, the current object context is applied to the provided iterate function.
Type declaration
Parameters
Returns void
void
-_get All Nodes With Tag
_get Article Metadata
byline: any;
excerpt: any;
siteName: any;
title: any;
}) = ...
Attempts to get excerpt and byline metadata for the article.
+_get All Nodes With Tag
_get Article Metadata
byline: any;
excerpt: any;
siteName: any;
title: any;
}) = ...
Attempts to get excerpt and byline metadata for the article.
Type declaration
byline: any;
excerpt: any;
siteName: any;
title: any;
}
Parameters
— object containing any metadata that could be extracted from JSON-LD object.
Returns {
byline: any;
excerpt: any;
siteName: any;
title: any;
}
Object with optional "excerpt" and "byline" properties
-byline: any
excerpt: any
site Name: any
title: any
_get Article Title
Get the article title as an H1.
+byline: any
excerpt: any
site Name: any
title: any
_get Article Title
Get the article title as an H1.
Type declaration
Returns string
string
-_get Char Count
Get the number of times a string s appears in the node e.
+_get Char Count
Get the number of times a string s appears in the node e.
Type declaration
Parameters
Returns number
number (integer)
-_get Class Weight
Get an elements class/id weight. Uses regular expressions to tell if this +
_get Class Weight
Get an elements class/id weight. Uses regular expressions to tell if this element looks good or bad.
Type declaration
Parameters
Returns number
number (Integer)
-_get Inner Text
Get the inner text of a node - cross browser compatibly. +
_get Inner Text
Get the inner text of a node - cross browser compatibly. This also strips out any excess whitespace to be found.
Type declaration
Parameters
Returns any
string
-_getJSONLD
Try to extract metadata from JSON-LD object. +
_getJSONLD
Try to extract metadata from JSON-LD object. For now, only Schema.org objects of type Article or its subtypes are supported.
Type declaration
Parameters
Returns {}
Object with any metadata that could be extracted (possibly none)
-_get Link Density
Get the density of links as a percentage of the content +
_get Link Density
Get the density of links as a percentage of the content This is the amount of text that is inside a link divided by the total text in the node.
Type declaration
Parameters
Returns number
number (float)
-_get Next Node
Traverse the DOM from node to node, starting at the node passed in. +
_get Next Node
Traverse the DOM from node to node, starting at the node passed in. Pass true for the second parameter to indicate this node itself (and its kids) are going away, and we want the next node over.
Calling this in a loop will traverse the DOM depth-first.
-_get Node Ancestors
_get Row And Column Count
columns: number;
rows: number;
}) = ...
Return an object indicating how many rows and columns this table has.
-_get Text Density
_grab Article
grabArticle - Using a variety of metrics (content score, classname, element types), find the content that is +
_get Node Ancestors
_get Row And Column Count
columns: number;
rows: number;
}) = ...
Return an object indicating how many rows and columns this table has.
+_get Text Density
_grab Article
grabArticle - Using a variety of metrics (content score, classname, element types), find the content that is most likely to be the stuff a user wants to read. Then return it wrapped up in a div.
Param: page
a document to run upon. Needs to be a full document, complete with body.
-Returns
Element
-_has Ancestor Tag
Check if a given node has one of its ancestor tag name matching the +
Returns
Element
+_has Ancestor Tag
Check if a given node has one of its ancestor tag name matching the provided one.
Type declaration
Parameters
Returns boolean
Boolean
-_has Child Block Element
Determine whether element has any children block level elements.
-_has Single Tag Inside Element
Check if this node has only whitespace and a single element with given tag +
_has Child Block Element
Determine whether element has any children block level elements.
+_has Single Tag Inside Element
Check if this node has only whitespace and a single element with given tag Returns false if the DIV node contains non-empty text nodes or if it contains no element with given tag or more than 1 element.
-_header Duplicates Title
Check if this node is an H1 or H2 element whose content is mostly +
_header Duplicates Title
Check if this node is an H1 or H2 element whose content is mostly the same as the article title.
Type declaration
Parameters
Returns boolean
boolean indicating whether this is a title-like header.
-_initialize Node
Initialize a node with the readability object. Also checks the +
_initialize Node
Initialize a node with the readability object. Also checks the className/id for special names to add to its score.
Type declaration
Parameters
Returns void
void
-_is Element Without Content
_is Phrasing Content
Determine if a node qualifies as phrasing content. +
_is Element Without Content
_is Phrasing Content
Determine if a node qualifies as phrasing content. https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content
-_is Probably Visible
_is Single Image
Check if node is image, or if node contains exactly only one image +
_is Probably Visible
_is Single Image
Check if node is image, or if node contains exactly only one image whether as a direct child or as its descendants.
-_is Valid Byline
Check whether the input string could be a byline. +
_is Valid Byline
Check whether the input string could be a byline. This verifies that the input is a string, and that the length is less than 100 chars.
Type declaration
Parameters
Returns boolean
Boolean - whether the input string is a byline.
-_is Whitespace
_keep Classes
_mark Data Tables
Look for 'data' (as opposed to 'layout') tables, for which we use +
_is Whitespace
_keep Classes
_mark Data Tables
Look for 'data' (as opposed to 'layout') tables, for which we use similar checks as https://searchfox.org/mozilla-central/rev/f82d5c549f046cb64ce5602bfd894b7ae807c8f8/accessible/generic/TableAccessible.cpp#19
-_max Elems To Parse
_nb Top Candidates
_next Node
Finds the next node, starting from the given node, and ignoring +
_max Elems To Parse
_nb Top Candidates
_next Node
Finds the next node, starting from the given node, and ignoring whitespace in between. If the given node is an element, the same node is returned.
-_post Process Content
Run any post-process modifications to article content as necessary.
+_post Process Content
Run any post-process modifications to article content as necessary.
Type declaration
Parameters
Returns void
void
-_prep Article
Prepare the article node for display. Clean out any inline styles, +
_prep Article
Prepare the article node for display. Clean out any inline styles, iframes, forms, strip extraneous
tags, etc.
Type declaration
Parameters
Returns void
void
-_prep Document
Prepare the HTML document for readability to scrape it. +
_prep Document
Prepare the HTML document for readability to scrape it. This includes things like stripping javascript, CSS, and handling terrible markup.
Type declaration
Returns void
void
-_remove And Get Next
_remove Flag
_remove Nodes
Iterates over a NodeList, calls
filterFn
for each node and removes node +_remove And Get Next
_remove Flag
_remove Nodes
Iterates over a NodeList, calls
filterFn
for each node and removes node if function returnedtrue
.If function is not passed, removes all the nodes in node list.
Type declaration
Parameters
Returns void
void
-_remove Scripts
Removes script tags from the document.
-_replace Brs
Replaces 2 or more successive
elements with a single
. +
_remove Scripts
Removes script tags from the document.
+_replace Brs
Replaces 2 or more successive
elements with a single
. Whitespace between
elements are ignored. For example:
bar
abc
bar
abc
_replace Node Tags
Iterates over a NodeList, and calls _setNodeTag for each node.
+bar
abc
_replace Node Tags
Iterates over a NodeList, and calls _setNodeTag for each node.
Type declaration
Parameters
Returns void
void
-_serializer
_set Node Tag
_simplify Nested Elements
_some Node
Iterate over a NodeList, return true if any of the provided iterate +
_serializer
_set Node Tag
_simplify Nested Elements
_some Node
Iterate over a NodeList, return true if any of the provided iterate function calls returns true, false otherwise.
For convenience, the current object context is applied to the provided iterate function.
Type declaration
Parameters
Returns any
Boolean
-_text Similarity
_unescape Html Entities
Converts some of the common HTML entities in string to their corresponding characters.
+_text Similarity
_unescape Html Entities
Converts some of the common HTML entities in string to their corresponding characters.
Type declaration
Parameters
{string} - a string to unescape.
Returns string
string without HTML entity.
-_unwrap Noscript Images
Find all
_unwrap Noscript Images
Find all
-log
parse
Runs readability.
+log
parse
Runs readability.
Workflow:
ReturnsReplace the current DOM tree with the new one.- Read peacefully.
Returns
void
-Static
prototypeALTER_TO_DIV_EXCEPTIONS: string[];
CLASSES_TO_PRESERVE: string[];
DEFAULT_CHAR_THRESHOLD: number;
DEFAULT_MAX_ELEMS_TO_PARSE: number;
DEFAULT_N_TOP_CANDIDATES: number;
DEFAULT_TAGS_TO_SCORE: string[];
DEPRECATED_SIZE_ATTRIBUTE_ELEMS: string[];
DIV_TO_P_ELEMS: Set<string>;
ELEMENT_NODE: number;
FLAG_CLEAN_CONDITIONALLY: number;
FLAG_STRIP_UNLIKELYS: number;
FLAG_WEIGHT_CLASSES: number;
HTML_ESCAPE_MAP: {
amp: string;
apos: string;
gt: string;
lt: string;
quot: string;
};
PHRASING_ELEMS: string[];
PRESENTATIONAL_ATTRIBUTES: string[];
REGEXPS: {
b64DataUrl: RegExp;
byline: RegExp;
extraneous: RegExp;
hasContent: RegExp;
hashUrl: RegExp;
jsonLdArticleTypes: RegExp;
negative: RegExp;
nextLink: RegExp;
normalize: RegExp;
okMaybeItsACandidate: RegExp;
positive: RegExp;
prevLink: RegExp;
replaceFonts: RegExp;
shareElements: RegExp;
srcsetUrl: RegExp;
tokenize: RegExp;
unlikelyCandidates: RegExp;
videos: RegExp;
whitespace: RegExp;
};
TEXT_NODE: number;
UNLIKELY_ROLES: string[];
_checkByline: typeof __function;
_clean: ((e: any, tag: any) => void);
_cleanClasses: ((node: any) => void);
_cleanConditionally: ((e: any, tag: any) => void);
_cleanHeaders: ((e: any) => void);
_cleanMatchedNodes: ((e: any, filter: any) => void);
_cleanStyles: ((e: any) => void);
_concatNodeLists: ((...args: any[]) => any);
_everyNode: ((nodeList: any, fn: any) => any);
_findNode: ((nodeList: any, fn: any) => any);
_fixLazyImages: ((root: any) => void);
_fixRelativeUris: ((articleContent: any) => void);
_flagIsActive: ((flag: any) => boolean);
_forEachNode: ((nodeList: any, fn: any) => void);
_getAllNodesWithTag: ((node: any, tagNames: any) => any);
_getArticleMetadata: ((jsonld: any) => {
byline: any;
excerpt: any;
siteName: any;
title: any;
});
_getArticleTitle: (() => string);
_getCharCount: ((e: any, s: any) => number);
_getClassWeight: ((e: any) => number);
_getInnerText: ((e: any, normalizeSpaces: any) => any);
_getJSONLD: ((doc: any) => {});
_getLinkDensity: ((element: any) => number);
_getNextNode: ((node: any, ignoreSelfAndKids: any) => any);
_getNodeAncestors: ((node: any, maxDepth: any) => any[]);
_getRowAndColumnCount: ((table: any) => {
columns: number;
rows: number;
});
_getTextDensity: ((e: any, tags: any) => number);
_grabArticle: typeof __function;
_hasAncestorTag: ((node: any, tagName: any, maxDepth: any, filterFn: any) => boolean);
_hasChildBlockElement: ((element: any) => any);
_hasSingleTagInsideElement: ((element: any, tag: any) => boolean);
_headerDuplicatesTitle: ((node: any) => boolean);
_initializeNode: ((node: any) => void);
_isElementWithoutContent: ((node: any) => boolean);
_isPhrasingContent: ((node: any) => any);
_isProbablyVisible: ((node: any) => boolean);
_isSingleImage: ((node: any) => any);
_isValidByline: ((byline: any) => boolean);
_isWhitespace: ((node: any) => boolean);
_markDataTables: ((root: any) => void);
_nextNode: ((node: any) => any);
_postProcessContent: ((articleContent: any) => void);
_prepArticle: ((articleContent: any) => void);
_prepDocument: (() => void);
_removeAndGetNext: ((node: any) => any);
_removeFlag: typeof __function;
_removeNodes: ((nodeList: any, filterFn: any) => void);
_removeScripts: ((doc: any) => void);
_replaceBrs: ((elem: any) => void);
_replaceNodeTags: ((nodeList: any, newTagName: any) => void);
_setNodeTag: ((node: any, tag: any) => any);
_simplifyNestedElements: ((articleContent: any) => void);
_someNode: ((nodeList: any, fn: any) => any);
_textSimilarity: ((textA: any, textB: any) => number);
_unescapeHtmlEntities: ((str: string) => string);
_unwrapNoscriptImages: ((doc: any) => void);
parse: typeof __function;
}
Type declaration
ALTER_ TO_ DIV_ EXCEPTIONS: string[]
CLASSES_ TO_ PRESERVE: string[]
DEFAULT_ CHAR_ THRESHOLD: number
DEFAULT_ MAX_ ELEMS_ TO_ PARSE: number
DEFAULT_ N_ TOP_ CANDIDATES: number
DEFAULT_ TAGS_ TO_ SCORE: string[]
DEPRECATED_ SIZE_ ATTRIBUTE_ ELEMS: string[]
DIV_ TO_ P_ ELEMS: Set<string>
ELEMENT_ NODE: number
FLAG_ CLEAN_ CONDITIONALLY: number
FLAG_ STRIP_ UNLIKELYS: number
FLAG_ WEIGHT_ CLASSES: number
HTML_ ESCAPE_ MAP: {
amp: string;
apos: string;
gt: string;
lt: string;
quot: string;
}
amp: string
apos: string
gt: string
lt: string
quot: string
PHRASING_ ELEMS: string[]
PRESENTATIONAL_ ATTRIBUTES: string[]
REGEXPS: {
b64DataUrl: RegExp;
byline: RegExp;
extraneous: RegExp;
hasContent: RegExp;
hashUrl: RegExp;
jsonLdArticleTypes: RegExp;
negative: RegExp;
nextLink: RegExp;
normalize: RegExp;
okMaybeItsACandidate: RegExp;
positive: RegExp;
prevLink: RegExp;
replaceFonts: RegExp;
shareElements: RegExp;
srcsetUrl: RegExp;
tokenize: RegExp;
unlikelyCandidates: RegExp;
videos: RegExp;
whitespace: RegExp;
}
b64 Data Url: RegExp
byline: RegExp
extraneous: RegExp
has Content: RegExp
hash Url: RegExp
json Ld Article Types: RegExp
negative: RegExp
next Link: RegExp
normalize: RegExp
ok Maybe ItsACandidate: RegExp
positive: RegExp
prev Link: RegExp
replace Fonts: RegExp
share Elements: RegExp
srcset Url: RegExp
tokenize: RegExp
unlikely Candidates: RegExp
videos: RegExp
whitespace: RegExp
TEXT_ NODE: number
UNLIKELY_ ROLES: string[]
_check Byline: typeof __function
_clean: ((e: any, tag: any) => void)
Clean a node of all elements of type "tag". +
Returns
void
+Static
prototypeALTER_TO_DIV_EXCEPTIONS: string[];
CLASSES_TO_PRESERVE: string[];
DEFAULT_CHAR_THRESHOLD: number;
DEFAULT_MAX_ELEMS_TO_PARSE: number;
DEFAULT_N_TOP_CANDIDATES: number;
DEFAULT_TAGS_TO_SCORE: string[];
DEPRECATED_SIZE_ATTRIBUTE_ELEMS: string[];
DIV_TO_P_ELEMS: Set<string>;
ELEMENT_NODE: number;
FLAG_CLEAN_CONDITIONALLY: number;
FLAG_STRIP_UNLIKELYS: number;
FLAG_WEIGHT_CLASSES: number;
HTML_ESCAPE_MAP: {
amp: string;
apos: string;
gt: string;
lt: string;
quot: string;
};
PHRASING_ELEMS: string[];
PRESENTATIONAL_ATTRIBUTES: string[];
REGEXPS: {
b64DataUrl: RegExp;
byline: RegExp;
extraneous: RegExp;
hasContent: RegExp;
hashUrl: RegExp;
jsonLdArticleTypes: RegExp;
negative: RegExp;
nextLink: RegExp;
normalize: RegExp;
okMaybeItsACandidate: RegExp;
positive: RegExp;
prevLink: RegExp;
replaceFonts: RegExp;
shareElements: RegExp;
srcsetUrl: RegExp;
tokenize: RegExp;
unlikelyCandidates: RegExp;
videos: RegExp;
whitespace: RegExp;
};
TEXT_NODE: number;
UNLIKELY_ROLES: string[];
_checkByline: typeof __function;
_clean: ((e: any, tag: any) => void);
_cleanClasses: ((node: any) => void);
_cleanConditionally: ((e: any, tag: any) => void);
_cleanHeaders: ((e: any) => void);
_cleanMatchedNodes: ((e: any, filter: any) => void);
_cleanStyles: ((e: any) => void);
_concatNodeLists: ((...args: any) => any);
_everyNode: ((nodeList: any, fn: any) => any);
_findNode: ((nodeList: any, fn: any) => any);
_fixLazyImages: ((root: any) => void);
_fixRelativeUris: ((articleContent: any) => void);
_flagIsActive: ((flag: any) => boolean);
_forEachNode: ((nodeList: any, fn: any) => void);
_getAllNodesWithTag: ((node: any, tagNames: any) => any);
_getArticleMetadata: ((jsonld: any) => {
byline: any;
excerpt: any;
siteName: any;
title: any;
});
_getArticleTitle: (() => string);
_getCharCount: ((e: any, s: any) => number);
_getClassWeight: ((e: any) => number);
_getInnerText: ((e: any, normalizeSpaces: any) => any);
_getJSONLD: ((doc: any) => {});
_getLinkDensity: ((element: any) => number);
_getNextNode: ((node: any, ignoreSelfAndKids: any) => any);
_getNodeAncestors: ((node: any, maxDepth: any) => any[]);
_getRowAndColumnCount: ((table: any) => {
columns: number;
rows: number;
});
_getTextDensity: ((e: any, tags: any) => number);
_grabArticle: typeof __function;
_hasAncestorTag: ((node: any, tagName: any, maxDepth: any, filterFn: any) => boolean);
_hasChildBlockElement: ((element: any) => any);
_hasSingleTagInsideElement: ((element: any, tag: any) => boolean);
_headerDuplicatesTitle: ((node: any) => boolean);
_initializeNode: ((node: any) => void);
_isElementWithoutContent: ((node: any) => boolean);
_isPhrasingContent: ((node: any) => any);
_isProbablyVisible: ((node: any) => boolean);
_isSingleImage: ((node: any) => any);
_isValidByline: ((byline: any) => boolean);
_isWhitespace: ((node: any) => boolean);
_markDataTables: ((root: any) => void);
_nextNode: ((node: any) => any);
_postProcessContent: ((articleContent: any) => void);
_prepArticle: ((articleContent: any) => void);
_prepDocument: (() => void);
_removeAndGetNext: ((node: any) => any);
_removeFlag: typeof __function;
_removeNodes: ((nodeList: any, filterFn: any) => void);
_removeScripts: ((doc: any) => void);
_replaceBrs: ((elem: any) => void);
_replaceNodeTags: ((nodeList: any, newTagName: any) => void);
_setNodeTag: ((node: any, tag: any) => any);
_simplifyNestedElements: ((articleContent: any) => void);
_someNode: ((nodeList: any, fn: any) => any);
_textSimilarity: ((textA: any, textB: any) => number);
_unescapeHtmlEntities: ((str: string) => string);
_unwrapNoscriptImages: ((doc: any) => void);
parse: typeof __function;
}
Type declaration
ALTER_ TO_ DIV_ EXCEPTIONS: string[]
CLASSES_ TO_ PRESERVE: string[]
DEFAULT_ CHAR_ THRESHOLD: number
DEFAULT_ MAX_ ELEMS_ TO_ PARSE: number
DEFAULT_ N_ TOP_ CANDIDATES: number
DEFAULT_ TAGS_ TO_ SCORE: string[]
DEPRECATED_ SIZE_ ATTRIBUTE_ ELEMS: string[]
DIV_ TO_ P_ ELEMS: Set<string>
ELEMENT_ NODE: number
FLAG_ CLEAN_ CONDITIONALLY: number
FLAG_ STRIP_ UNLIKELYS: number
FLAG_ WEIGHT_ CLASSES: number
HTML_ ESCAPE_ MAP: {
amp: string;
apos: string;
gt: string;
lt: string;
quot: string;
}
amp: string
apos: string
gt: string
lt: string
quot: string
PHRASING_ ELEMS: string[]
PRESENTATIONAL_ ATTRIBUTES: string[]
REGEXPS: {
b64DataUrl: RegExp;
byline: RegExp;
extraneous: RegExp;
hasContent: RegExp;
hashUrl: RegExp;
jsonLdArticleTypes: RegExp;
negative: RegExp;
nextLink: RegExp;
normalize: RegExp;
okMaybeItsACandidate: RegExp;
positive: RegExp;
prevLink: RegExp;
replaceFonts: RegExp;
shareElements: RegExp;
srcsetUrl: RegExp;
tokenize: RegExp;
unlikelyCandidates: RegExp;
videos: RegExp;
whitespace: RegExp;
}
b64 Data Url: RegExp
byline: RegExp
extraneous: RegExp
has Content: RegExp
hash Url: RegExp
json Ld Article Types: RegExp
negative: RegExp
next Link: RegExp
normalize: RegExp
ok Maybe ItsACandidate: RegExp
positive: RegExp
prev Link: RegExp
replace Fonts: RegExp
share Elements: RegExp
srcset Url: RegExp
tokenize: RegExp
unlikely Candidates: RegExp
videos: RegExp
whitespace: RegExp
TEXT_ NODE: number
UNLIKELY_ ROLES: string[]
_check Byline: typeof __function
_clean: ((e: any, tag: any) => void)
Clean a node of all elements of type "tag". (Unless it's a youtube/vimeo video. People love movies.)
Parameters
Returns void
void
_clean Classes: ((node: any) => void)
Removes the class="" attribute from every element in the given @@ -242,8 +279,8 @@
Returns
_clean Styles: ((e: any) => void)
Remove the style attribute on every e and under. TODO: Test if getElementsByTagName(*) is faster.
Parameters
Returns void
void
-_concat Node Lists: ((...args: any[]) => any)
Concat all nodelists passed as arguments.
-Parameters
Rest
...args: any[]Returns any
...NodeList
+_concat Node Lists: ((...args: any) => any)
Concat all nodelists passed as arguments.
+Parameters
Rest
...args: anyReturns any
...NodeList
_every Node: ((nodeList: any, fn: any) => any)
Iterate over a NodeList, return true if all of the provided iterate function calls return true, false otherwise.
For convenience, the current object context is applied to the @@ -290,7 +327,7 @@
Returns- (table): {
- table: any
- (e, tags): number
- e: any
- tags: any
- (node, tagName, maxDepth, filterFn): boolean
- node: any
- tagName: any
- maxDepth: any
- filterFn: any
- Read peacefully.
-
columns: number;
rows: number;
}
Parameters
Returns {
columns: number;
rows: number;
}
columns: number
rows: number
_get Text Density: ((e: any, tags: any) => number)
Parameters
Returns number
_grab Article: typeof __function
grabArticle - Using a variety of metrics (content score, classname, element types), find the content that is most likely to be the stuff a user wants to read. Then return it wrapped up in a div.
Param: page
a document to run upon. Needs to be a full document, complete with body.
-Returns
Element
+Returns
Element
_has Ancestor Tag: ((node: any, tagName: any, maxDepth: any, filterFn: any) => boolean)
Check if a given node has one of its ancestor tag name matching the provided one.
Parameters
Returns boolean
Boolean
@@ -358,8 +395,8 @@ReturnsReplace the current DOM tree with the new one.
Returns
void
-Settings
On This Page
Constructors
Properties
- Preparing search index...
- The search index is not available
ai-research-agentClass Document
Index
Constructors
Properties
Methods
Constructors
constructor
Returns Document
Properties
author
body
categories
comments
commentsbody
date
description
filedate
fingerprint
hostname
id
image
language
license
pagetype
raw Text
sitename
tags
text
title
url
Methods
as Dict
Returns Document
clean And Trim
Returns void
set Attributes
Parameters
Returns void
Static
fromParameters
Returns Document
Settings
On This Page
Constructors
Properties
Methods
- Preparing search index...
- The search index is not available
ai-research-agentClass Extractor
Index
Constructors
Properties
Methods
Constructors
constructor
Parameters
authorBlacklist: any;
comments: boolean;
config: {
COOKIE: string;
DOWNLOAD_TIMEOUT: string;
EXTENSIVE_DATE_SEARCH: string;
EXTERNAL_URLS: string;
EXTRACTION_TIMEOUT: string;
MAX_FILE_SIZE: string;
MAX_REDIRECTS: string;
MAX_REPETITIONS: string;
MIN_DUPLCHECK_SIZE: string;
MIN_EXTRACTED_COMM_SIZE: string;
MIN_EXTRACTED_SIZE: string;
MIN_FILE_SIZE: string;
MIN_OUTPUT_COMM_SIZE: string;
MIN_OUTPUT_SIZE: string;
SLEEP_TIME: string;
USER_AGENTS: string;
};
dateParams: any;
dedup: boolean;
fast: boolean;
formatting: boolean;
images: boolean;
lang: any;
links: boolean;
maxTreeSize: any;
onlyWithMetadata: boolean;
outputFormat: string;
precision: boolean;
recall: boolean;
source: any;
tables: boolean;
teiValidation: boolean;
url: any;
urlBlacklist: any;
withMetadata: boolean;
} = {}
author Blacklist: any
comments: boolean
config: {
COOKIE: string;
DOWNLOAD_TIMEOUT: string;
EXTENSIVE_DATE_SEARCH: string;
EXTERNAL_URLS: string;
EXTRACTION_TIMEOUT: string;
MAX_FILE_SIZE: string;
MAX_REDIRECTS: string;
MAX_REPETITIONS: string;
MIN_DUPLCHECK_SIZE: string;
MIN_EXTRACTED_COMM_SIZE: string;
MIN_EXTRACTED_SIZE: string;
MIN_FILE_SIZE: string;
MIN_OUTPUT_COMM_SIZE: string;
MIN_OUTPUT_SIZE: string;
SLEEP_TIME: string;
USER_AGENTS: string;
}
COOKIE: string
DOWNLOAD_ TIMEOUT: string
EXTENSIVE_ DATE_ SEARCH: string
EXTERNAL_ URLS: string
EXTRACTION_ TIMEOUT: string
MAX_ FILE_ SIZE: string
MAX_ REDIRECTS: string
MAX_ REPETITIONS: string
MIN_ DUPLCHECK_ SIZE: string
MIN_ EXTRACTED_ COMM_ SIZE: string
MIN_ EXTRACTED_ SIZE: string
MIN_ FILE_ SIZE: string
MIN_ OUTPUT_ COMM_ SIZE: string
MIN_ OUTPUT_ SIZE: string
SLEEP_ TIME: string
USER_ AGENTS: string
date Params: any
dedup: boolean
fast: boolean
formatting: boolean
images: boolean
lang: any
links: boolean
max Tree Size: any
only With Metadata: boolean
output Format: string
precision: boolean
recall: boolean
source: any
tables: boolean
tei Validation: boolean
url: any
url Blacklist: any
with Metadata: boolean
Returns Extractor
Properties
author Blacklist
comments
config
date Params
dedup
fast
focus
format
formatting
images
lang
links
max Tree Size
only With Metadata
source
tables
tei Validation
url
url Blacklist
with Metadata
Methods
add Config
Parameters
Returns void
set Format
Parameters
Returns void
Settings
On This Page
Constructors
Properties
Methods
- Preparing search index...
- The search index is not available
ai-research-agentClass CrawlParameters
Index
Constructors
Properties
Methods
Constructors
constructor
Parameters
Returns CrawlParameters
Properties
base
i
is On
known Num
lang
prune Xpath
ref
rules
start
Methods
_get Base Url
Parameters
Returns string
_get Reference
Parameters
Returns any
filter List
Parameters
Returns any
is Valid Link
Parameters
Returns boolean
update Metadata
Parameters
Returns void
Settings
On This Page
Constructors
Properties
Methods
- Preparing search index...
- The search index is not available
ai-research-agentFunction suggestNextWordCompletions
Completes the query with the most likely next words for phrases. If typing 2+ letters of a word, returns all possible words matching those few letters.
Parameters
The input query which can be pertial words or phrases.
-limitMaxResults: number;
numberOfLastWordsToCheck: number;
phrasesModel: any;
} = {}
limit Max Results: number
default=10 - The maximum number of autocomplete suggestions to return.
+Optional
options: {limitMaxResults: number;
numberOfLastWordsToCheck: number;
phrasesModel: any;
} = {}
limit Max Results: number
default=10 - The maximum number of autocomplete suggestions to return.
number Of Last Words To Check: number
default=5 - The number of last words in the query to check for phrase completions.
phrases Model: any
A custom phrases model to use for autocomplete suggestions.
Returns Promise<any[]>
An array of autocomplete suggestions, each containing either a 'phrase' or 'word' property.
@@ -11,7 +11,7 @@Example
-Settings