-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathsearch.js
57 lines (53 loc) · 2.52 KB
/
search.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import { load } from "cheerio";
import fetch from "node-fetch";
const userAgents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36",
];
export const google = async (term, lang) => {
const fetchData = async (term, lang) => {
const result = await fetch(`https://google.com/search?q=${encodeURIComponent(term)}&hl=${lang}`, {
headers: { "User-Agent": userAgents[Math.floor(Math.random() * userAgents.length)] },
});
return load(await result.text());
};
const $ = await fetchData(term, lang);
return (
$(".PZPZlf span")
.map((i, element) => $(element).text())
.get()
.join(" ")
.replaceAll("Описание", "")
.replaceAll("ЕЩЁ", "") + $(".LGOjhe span").text()
);
};
export const googleImages = async (term, lang) => {
const fetchData = async (term, lang) => {
const result = await fetch(
`https://google.com/search?q=${term}&oq=${term}&hl=${lang}&tbm=isch&asearch=ichunk&async=_id:rg_s,_pms:s,_fmt:pc&sourceid=chrome&ie=UTF-8`,
{
headers: { "User-Agent": userAgents[Math.floor(Math.random() * userAgents.length)] },
}
);
return load(await result.text());
};
const $ = await fetchData(term, lang);
let images_results = [];
$("div.rg_bx").each((i, el) => {
let json_string = $(el).find(".rg_meta").text();
images_results.push({
title: $(el).find(".iKjWAf .mVDMnf").text(),
source: $(el).find(".iKjWAf .FnqxG").text(),
link: JSON.parse(json_string).ru,
original: JSON.parse(json_string).ou,
thumbnail: $(el).find(".rg_l img").attr("src")
? $(el).find(".rg_l img").attr("src")
: $(el).find(".rg_l img").attr("data-src"),
});
});
return images_results;
};