Files
page-assist/src/web/local-google.ts

46 lines
1.2 KiB
TypeScript
Raw Normal View History

import { cleanUrl } from "~libs/clean-url"
import { chromeRunTime } from "~libs/runtime"
const BLOCKED_HOSTS = [
"google.com",
"youtube.com",
"twitter.com",
]
export const localGoogleSearch = async (query: string) => {
await chromeRunTime(
cleanUrl("https://www.google.com/search?hl=en&q=" + query)
)
const abortController = new AbortController()
setTimeout(() => abortController.abort(), 10000)
const htmlString = await fetch(
"https://www.google.com/search?hl=en&q=" + query,
{
signal: abortController.signal
}
)
.then((response) => response.text())
.catch()
const parser = new DOMParser()
const doc = parser.parseFromString(htmlString, "text/html")
const searchResults = Array.from(doc.querySelectorAll("div.g")).map(
(result) => {
const title = result.querySelector("h3")?.textContent
const link = result.querySelector("a")?.getAttribute("href")
return { title, link }
}
)
const filteredSearchResults = searchResults
.filter(
(result) =>
!result.link ||
!BLOCKED_HOSTS.some((host) => result.link.includes(host))
)
.filter((result) => result.title && result.link)
return filteredSearchResults
}