defuddle 0.5.4 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/scoring.js CHANGED
@@ -2,7 +2,93 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ContentScorer = void 0;
4
4
  const constants_1 = require("./constants");
5
+ const contentIndicators = [
6
+ 'article',
7
+ 'content',
8
+ 'entry',
9
+ 'image',
10
+ 'img',
11
+ 'photo',
12
+ 'figure',
13
+ 'figcaption',
14
+ 'table',
15
+ 'pre',
16
+ 'main',
17
+ 'post',
18
+ 'story'
19
+ ];
20
+ // Text content to test against
21
+ const navigationIndicators = [
22
+ 'advertisement',
23
+ 'all rights reserved',
24
+ 'banner',
25
+ 'cookie',
26
+ 'comments',
27
+ 'copyright',
28
+ 'follow me',
29
+ 'follow us',
30
+ 'footer',
31
+ 'header',
32
+ 'homepage',
33
+ 'login',
34
+ 'menu',
35
+ 'more articles',
36
+ 'more like this',
37
+ 'most read',
38
+ 'nav',
39
+ 'navigation',
40
+ 'newsletter',
41
+ 'newsletter',
42
+ 'popular',
43
+ 'privacy',
44
+ 'recommended',
45
+ 'register',
46
+ 'related',
47
+ 'responses',
48
+ 'share',
49
+ 'sidebar',
50
+ 'sign in',
51
+ 'sign up',
52
+ 'signup',
53
+ 'social',
54
+ 'sponsored',
55
+ 'subscribe',
56
+ 'subscribe',
57
+ 'terms',
58
+ 'trending'
59
+ ];
60
+ // Classes that indicate non-content these are elements are
61
+ // not removed, but lower the score
62
+ const nonContentPatterns = [
63
+ 'ad',
64
+ 'banner',
65
+ 'cookie',
66
+ 'copyright',
67
+ 'footer',
68
+ 'header',
69
+ 'homepage',
70
+ 'menu',
71
+ 'nav',
72
+ 'newsletter',
73
+ 'popular',
74
+ 'privacy',
75
+ 'recommended',
76
+ 'related',
77
+ 'rights',
78
+ 'share',
79
+ 'sidebar',
80
+ 'social',
81
+ 'sponsored',
82
+ 'subscribe',
83
+ 'terms',
84
+ 'trending',
85
+ 'widget'
86
+ ];
5
87
  class ContentScorer {
88
+ constructor(doc, debug = false) {
89
+ this.doc = doc;
90
+ this.debug = debug;
91
+ }
6
92
  static scoreElement(element) {
7
93
  let score = 0;
8
94
  // Text density
@@ -49,6 +135,9 @@ class ContentScorer {
49
135
  const hasFootnotes = element.querySelector(constants_1.FOOTNOTE_INLINE_REFERENCES);
50
136
  if (hasFootnotes)
51
137
  score += 10;
138
+ const hasFootnotesList = element.querySelector(constants_1.FOOTNOTE_LIST_SELECTORS);
139
+ if (hasFootnotesList)
140
+ score += 10;
52
141
  // Check for nested tables (penalize)
53
142
  const nestedTables = element.getElementsByTagName('table').length;
54
143
  score -= nestedTables * 5;
@@ -90,6 +179,125 @@ class ContentScorer {
90
179
  });
91
180
  return bestScore > minScore ? bestElement : null;
92
181
  }
182
+ /**
183
+ * Scores blocks based on their content and structure
184
+ * and removes those that are likely not content
185
+ */
186
+ static scoreAndRemove(doc, debug = false) {
187
+ const startTime = Date.now();
188
+ let removedCount = 0;
189
+ // Track all elements to be removed
190
+ const elementsToRemove = new Set();
191
+ // Get all block elements
192
+ const blockElements = Array.from(doc.querySelectorAll(constants_1.BLOCK_ELEMENTS.join(',')));
193
+ // Process each block element
194
+ blockElements.forEach(element => {
195
+ // Skip elements that are already marked for removal
196
+ if (elementsToRemove.has(element)) {
197
+ return;
198
+ }
199
+ // Skip elements that are likely to be content
200
+ if (ContentScorer.isLikelyContent(element)) {
201
+ return;
202
+ }
203
+ // Score the element based on various criteria
204
+ const score = ContentScorer.scoreNonContentBlock(element);
205
+ // If the score is below the threshold, mark for removal
206
+ if (score < 0) {
207
+ elementsToRemove.add(element);
208
+ removedCount++;
209
+ }
210
+ });
211
+ // Remove all collected elements in a single pass
212
+ elementsToRemove.forEach(el => el.remove());
213
+ const endTime = Date.now();
214
+ if (debug) {
215
+ console.log('Defuddle', 'Removed non-content blocks:', {
216
+ count: removedCount,
217
+ processingTime: `${(endTime - startTime).toFixed(2)}ms`
218
+ });
219
+ }
220
+ }
221
+ /**
222
+ * Determines if an element is likely to be content based on its structure and attributes.
223
+ */
224
+ static isLikelyContent(element) {
225
+ // Check if the element has a role that indicates content
226
+ const role = element.getAttribute('role');
227
+ if (role && ['article', 'main', 'contentinfo'].includes(role)) {
228
+ return true;
229
+ }
230
+ // Check if the element has a class or id that indicates content
231
+ const className = element.className.toLowerCase();
232
+ const id = element.id.toLowerCase();
233
+ for (const indicator of contentIndicators) {
234
+ if (className.includes(indicator) || id.includes(indicator)) {
235
+ return true;
236
+ }
237
+ }
238
+ // Check if the element has a high text density
239
+ const text = element.textContent || '';
240
+ const words = text.split(/\s+/).length;
241
+ const paragraphs = element.getElementsByTagName('p').length;
242
+ // If the element has a significant amount of text and paragraphs, it's likely content
243
+ if (words > 50 && paragraphs > 1) {
244
+ return true;
245
+ }
246
+ return false;
247
+ }
248
+ /**
249
+ * Scores a block element based on various criteria to determine if it's likely not content.
250
+ * Returns a negative score if the element is likely not content, a positive score if it is.
251
+ */
252
+ static scoreNonContentBlock(element) {
253
+ // Skip footnote list elements
254
+ if (element.querySelector(constants_1.FOOTNOTE_LIST_SELECTORS)) {
255
+ return 0;
256
+ }
257
+ let score = 0;
258
+ // Get text content
259
+ const text = element.textContent || '';
260
+ const words = text.split(/\s+/).length;
261
+ // Skip very small elements
262
+ if (words < 3) {
263
+ return 0;
264
+ }
265
+ for (const indicator of navigationIndicators) {
266
+ if (text.toLowerCase().includes(indicator)) {
267
+ score -= 10;
268
+ }
269
+ }
270
+ // Check for high link density (navigation)
271
+ const links = element.getElementsByTagName('a').length;
272
+ const linkDensity = links / (words || 1);
273
+ if (linkDensity > 0.5) {
274
+ score -= 15;
275
+ }
276
+ // Check for list structure (navigation)
277
+ const lists = element.getElementsByTagName('ul').length + element.getElementsByTagName('ol').length;
278
+ if (lists > 0 && links > lists * 3) {
279
+ score -= 10;
280
+ }
281
+ // Check for specific class patterns that indicate non-content
282
+ const className = element.className.toLowerCase();
283
+ const id = element.id.toLowerCase();
284
+ for (const pattern of nonContentPatterns) {
285
+ if (className.includes(pattern) || id.includes(pattern)) {
286
+ score -= 8;
287
+ }
288
+ }
289
+ // Check for elements with many child elements but little text (typical for navigation)
290
+ // const childElements = element.children.length;
291
+ // if (childElements > 5 && words < childElements * 3) {
292
+ // score -= 12;
293
+ // }
294
+ // Check for elements with many divs but little text (typical for layout elements)
295
+ // const divs = element.getElementsByTagName('div').length;
296
+ // if (divs > 3 && words < divs * 2) {
297
+ // score -= 10;
298
+ // }
299
+ return score;
300
+ }
93
301
  }
94
302
  exports.ContentScorer = ContentScorer;
95
303
  //# sourceMappingURL=scoring.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../src/scoring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../src/scoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { DefuddleMetadata } from './types';
2
+ export declare function standardizeContent(element: Element, metadata: DefuddleMetadata, doc: Document, debug?: boolean): void;