@srart24/scraper
Version:
@srart24/scraper adalah sebuah module npm yang menyediakan berbagai fitur seru dan berguna seperti pengunduh konten dari platform populer, teks acak, permainan interaktif, dan berbagai fungsi hiburan.
235 lines (216 loc) • 10.3 kB
JavaScript
const cheerio = require('cheerio');
const axios = require('axios').default;
const { pickRandom } = require('../utils/index.js');
module.exports = class search {
pinterest = async (query) => {
try {
const { data } = await axios.get('https://id.pinterest.com/search/pins/?autologin=true&q=' + query, {
headers: {
"cookie": "_auth=1; _b=\"AVna7S1p7l1C5I9u0+nR3YzijpvXOPc6d09SyCzO+DcwpersQH36SmGiYfymBKhZcGg=\"; _pinterest_sess=TWc9PSZHamJOZ0JobUFiSEpSN3Z4a2NsMk9wZ3gxL1NSc2k2NkFLaUw5bVY5cXR5alZHR0gxY2h2MVZDZlNQalNpUUJFRVR5L3NlYy9JZkthekp3bHo5bXFuaFZzVHJFMnkrR3lTbm56U3YvQXBBTW96VUgzVUhuK1Z4VURGKzczUi9hNHdDeTJ5Y2pBTmxhc2owZ2hkSGlDemtUSnYvVXh5dDNkaDN3TjZCTk8ycTdHRHVsOFg2b2NQWCtpOWxqeDNjNkk3cS85MkhhSklSb0hwTnZvZVFyZmJEUllwbG9UVnpCYVNTRzZxOXNJcmduOVc4aURtM3NtRFo3STlmWjJvSjlWTU5ITzg0VUg1NGhOTEZzME9SNFNhVWJRWjRJK3pGMFA4Q3UvcHBnWHdaYXZpa2FUNkx6Z3RNQjEzTFJEOHZoaHRvazc1c1UrYlRuUmdKcDg3ZEY4cjNtZlBLRTRBZjNYK0lPTXZJTzQ5dU8ybDdVS015bWJKT0tjTWYyRlBzclpiamdsNmtpeUZnRjlwVGJXUmdOMXdTUkFHRWloVjBMR0JlTE5YcmhxVHdoNzFHbDZ0YmFHZ1VLQXU1QnpkM1FqUTNMTnhYb3VKeDVGbnhNSkdkNXFSMXQybjRGL3pyZXRLR0ZTc0xHZ0JvbTJCNnAzQzE0cW1WTndIK0trY05HV1gxS09NRktadnFCSDR2YzBoWmRiUGZiWXFQNjcwWmZhaDZQRm1UbzNxc21pV1p5WDlabm1UWGQzanc1SGlrZXB1bDVDWXQvUis3elN2SVFDbm1DSVE5Z0d4YW1sa2hsSkZJb1h0MTFpck5BdDR0d0lZOW1Pa2RDVzNySWpXWmUwOUFhQmFSVUpaOFQ3WlhOQldNMkExeDIvMjZHeXdnNjdMYWdiQUhUSEFBUlhUVTdBMThRRmh1ekJMYWZ2YTJkNlg0cmFCdnU2WEpwcXlPOVZYcGNhNkZDd051S3lGZmo0eHV0ZE42NW8xRm5aRWpoQnNKNnNlSGFad1MzOHNkdWtER0xQTFN5Z3lmRERsZnZWWE5CZEJneVRlMDd2VmNPMjloK0g5eCswZUVJTS9CRkFweHc5RUh6K1JocGN6clc1JmZtL3JhRE1sc0NMTFlpMVErRGtPcllvTGdldz0=\""
}
});
const $ = cheerio.load(data);
const result = [];
const hasil = [];
$('div > a').get().map(b => {
const link = $(b).find('img').attr('src');
result.push(link);
});
result.forEach(v => {
if (v == undefined) return;
hasil.push(v.replace(/236/g, '736'));
});
hasil.shift();
return { result: hasil, random: pickRandom(hasil) };
} catch (error) {
throw error;
}
};
carigc = async (nama) => {
try {
const { data } = await axios.get('http://ngarang.com/link-grup-wa/daftar-link-grup-wa.php?search=' + nama + '&searchby=name');
const $ = cheerio.load(data);
const result = [];
const lnk = [];
const nm = [];
$('div.wa-chat-title-container').each(function (a, b) {
const link = $(b).find('a').attr('href');
lnk.push(link);
});
$('div.wa-chat-title-text').each(function (c, d) {
const name = $(d).text();
nm.push(name);
});
for (let i = 0; i < lnk.length; i++) {
result.push({
nama: nm[i].split('. ')[1],
link: lnk[i].split('?')[0]
});
}
return { result: result };
} catch (error) {
throw error;
}
};
sticker = async (text) => {
try {
const { data } = await axios.get(`https://getstickerpack.com/stickers?query=${text}`);
const $ = cheerio.load(data);
const source = [];
const link = [];
var ya = $('#stickerPacks > div > div:nth-child(3) > div > a').text();
if (!ya) return;
$('#stickerPacks > div > div:nth-child(3) > div > a').each(function (a, b) {
source.push($(b).attr('href'));
});
const { data: stickerData } = await axios.get(source[Math.floor(Math.random() * source.length)]);
const $$ = cheerio.load(stickerData);
$$('#stickerPack > div > div.row > div > img').each(function (c, d) {
link.push($$(d).attr('src').replace(/&d=200x200/g, ''));
});
let result = {
title: $$('#intro > div > div > h1').text(),
url: link,
random: pickRandom(link)
};
return { result: result };
} catch (error) {
throw error;
}
};
hentai = () => {
return new Promise((resolve, reject) => {
const page = Math.floor(Math.random() * 1153);
axios.get('https://sfmcompile.club/page/' + page)
.then((data) => {
const $ = cheerio.load(data.data);
const hasil = [];
$('#primary > div > div > ul > li > article').each(function (a, b) {
hasil.push($(b).find('video > a').attr('href') || '');
});
let resss = {
result: hasil,
random: pickRandom(hasil)
};
resolve(resss);
})
.catch((error) => {
reject(error);
});
});
};
gImg = async (query) => {
try {
const data = await fetch(`https://www.google.com/search?q=${query}&tbm=isch`, {
headers: {
accept:
'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.9,id;q=0.8',
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36',
},
}).then((response) => response.text());
const $ = cheerio.load(data);
const pattern =
/\[1,\[0,"(?<id>[\d\w\-_]+)",\["https?:\/\/(?:[^"]+)",\d+,\d+\]\s?,\["(?<url>https?:\/\/(?:[^"]+))",\d+,\d+\]/gm;
const matches = [...$.html().matchAll(pattern)];
const decodeUrl = (url) => decodeURIComponent(JSON.parse(`"${url}"`));
const hasil = matches.map(({ groups }) => decodeUrl(groups?.url)).filter((v) => /.*\.jpe?g|png$/gi.test(v))
return { result: hasil, random: pickRandom(hasil) };
} catch (error) {
return { result: null, random: null };
}
}
npm = async (query = '@srart24/scraper') => {
const url = `https://registry.npmjs.com/-/v1/search?text=${query}`;
try {
const response = await axios.get(url);
let { objects } = response.data
if (!objects.length) throw `Module Package "${query}" not found`
let txt = objects.map(({ package: pkg }) => {
return `Author: ${pkg.author.name}
Name: ${pkg.name}(v${pkg.version})
Url: ${pkg.links.npm}
Date: ${pkg.date}
Desc: ${pkg.description}`
}).join`\n\n`
return { result: txt }
} catch (error) {
throw new Error(`Terjadi kesalahan saat mengambil data: ${error.message}`);
}
};
github = async (username = 'srart24') => {
const url = `https://api.github.com/users/${username}`;
try {
const response = await axios.get(url);
const userData = response.data;
if (!userData) throw `${username} Not Found`
const res = {
id: userData.id,
username: userData.login,
name: userData.name,
img_url: userData.avatar_url,
bio: userData.bio,
repo_public: userData.public_repos,
following: userData.following,
followers: userData.followers,
date_create: userData.created_at
};
return { result: res }
} catch (error) {
throw new Error(`Terjadi kesalahan saat mengambil data: ${error.message}`);
}
};
instagram = async (username= 'jokowi') => {
try {
const { data } = await axios.get(`https://dumpor.com/v/${username}`, {
headers: {
"user-agent": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"cookie": "_inst_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYT3dzSXI2YWR6SG1fNFdmTllfZnFIZ1Ra.5Og9VRy7gUy9IsCwUeYW8O8qvHbndaus-cqBRaZ7jcg; __gads=ID=f8ead4404e6a0e16-2206b4189ace0028:T=1636352226:RT=1636352226:S=ALNI_MbsEYYwp3U-9PJHoUHPA0mj4zn3uQ; _ym_uid=1636352226596108095; _ym_d=1636352226; _ym_isad=2; __atssc=google%3B1; FCNEC=[[\"AKsRol8BmQbGXTRP_1wzoi3Qg8PSMr7FFU0k- LGYROfG4nmvg - yFq6fARCalcofDHQIoyhwlo75582yk2a5WLTZakmPZu - SIkkXQNAePmtpVXwaPISfK8HC1pJ8tUjrRWRiFfjPaZh3rC - _6nkHQN25c - 1YR- NJtDQ == \"],null,[]]; FCCDCF=[null,null,[\"[[], [], [], [], null, null, true]\",1636352300969],null,null,null,[]]; __atuvc=3%7C45; __atuvs=6188c0df986e798b002"
}
})
const $ = cheerio.load(data)
var reszcx = {
Username: ($('#user-page > div.user > div.row > div > div.user__title > h4').text() || '').replace(/@/gi, '').trim(),
Fullname: $('#user-page > div.user > div.row > div > div.user__title > a > h1').text(),
Followers: ($('#user-page > div.container > div > div > div:nth-child(1) > div > a').eq(2).text() || '').replace(/Followers/gi, '').trim(),
Following: ($('#user-page > div.container > div > div > div:nth-child(1) > div > a').eq(3).text() || '').replace(/Following/gi, '').trim(),
Postingan: ($('#user-page > div.container > div > div > div:nth-child(1) > div > a').eq(0).text() || '').replace(/Posts/gi, '').trim(),
Bio: $('#user-page > div.user > div.row > div > div.user__info-desc').text(),
Image: ($('#user-page > div.user > div.row > div > div.user__img').attr('style') || '').replace(/(background-image: url\(\'|\'\);)/gi, '').trim()
}
if (!reszcx) throw 'Tidak Di Temukan'
return { result: reszcx }
} catch (e) {
throw 'Tidak Di Temukan'
}
}
cuaca = async (tempat = 'bali') => {
try {
const response = await axios.get('https://api.openweathermap.org/data/2.5/weather', {
params: {
q: tempat,
units: 'metric',
appid: '060a6bcfa19809c2cd4d97a212b19273'
}
});
const json = response.data;
if (json.cod !== 200) throw json;
const rres = {
Lokasi: json.name,
Negara: json.sys.country,
Cuaca: json.weather[0].description,
"Suhu saat ini": `${json.main.temp} °C`,
"Suhu tertinggi": `${json.main.temp_max} °C`,
"Suhu terendah": `${json.main.temp_min} °C`,
Kelembapan: `${json.main.humidity} %`,
Angin: `${json.wind.speed} km/jam`
};
return { result: rres };
} catch (error) {
console.log(error);
throw 'Tidak Ditemukan';
}
}
};