Skip to content

Commit 727ff2f

Browse files
committed
feat: getCoreContentText for any websites
1 parent ca32f87 commit 727ff2f

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

src/utils/get-core-content-text.mjs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
function getArea(e) {
2+
const rect = e.getBoundingClientRect()
3+
return rect.width * rect.height
4+
}
5+
6+
function findLargestElement(e) {
7+
let maxArea = 0
8+
let largestElement = null
9+
const limitedArea = 0.8 * getArea(e)
10+
11+
function traverseDOM(node) {
12+
if (node.nodeType === Node.ELEMENT_NODE) {
13+
const area = getArea(node)
14+
15+
if (area > maxArea && area < limitedArea) {
16+
maxArea = area
17+
largestElement = node
18+
}
19+
20+
Array.from(node.children).forEach(traverseDOM)
21+
}
22+
}
23+
24+
traverseDOM(e)
25+
return largestElement
26+
}
27+
28+
export function getCoreContentText() {
29+
const largestElement = findLargestElement(document.body)
30+
const secondLargestElement = findLargestElement(largestElement)
31+
console.log(largestElement)
32+
console.log(secondLargestElement)
33+
34+
if (!largestElement) return
35+
36+
let ret
37+
if (secondLargestElement && getArea(secondLargestElement) > 0.5 * getArea(largestElement)) {
38+
ret = secondLargestElement.textContent
39+
console.log('use second')
40+
} else {
41+
ret = largestElement.textContent
42+
console.log('use first')
43+
}
44+
return ret.trim().replaceAll(' ', '').replaceAll('\n\n', '').replaceAll(',,', '')
45+
}

src/utils/index.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export * from './ends-with-question-mark'
44
export * from './fetch-sse'
55
export * from './get-client-position'
66
export * from './get-conversation-pairs'
7+
export * from './get-core-content-text'
78
export * from './get-possible-element-by-query-selector'
89
export * from './init-session'
910
export * from './is-firefox.mjs'

0 commit comments

Comments
 (0)